从键盘上读入一行字符(约定:字符数≤127字节),判断其中的注释是否合法,不合法则报错,合法时则删除注释后再输出。合法注释是指“/*”标记注释开始、“*/”标记注释结束,通常表现为/* ……*/。
注意事项:
(1)只考虑行内最多只包含一个注释的情况。
(2)不合法的注释情况有很多种,例如?……*/缺注释开始标记、/ ?* ……*/缺注释开始标记、/* ……缺注释结束标记、/* ……* ?/缺结束标记。
(3)编程可用素材:printf("input a string:")...、printf("Output:\nThe result is :")...、printf("Output:\ncomment is error\n")...。
程序的运行效果应类似地如图1、图2、图3和图4所示,图1中的int main(void){char ch;/*ding yi*/ int i}、图2中的int main(void){char ch;ding yi*/ int i}、图3中的int main(void){char ch;/*ding yi* / int i}和图4中的int main(void){char ch; int i}是从键盘输入的内容。
程序运行效果示例:
#include <string.h>
#include <stdio.h>
int test( char arr[],int num)? test函数用途找到"*/"的位置 如果没有就错误
{
?? ?int i = 0;
?? ?int j = 0;
?? ?int len = strlen(arr);
?? ?for( i = num + 2 ?; arr[i] != '\0';i++)
?? ?{
?? ??? ?if( arr[i] == '*')
?? ??? ?{
?? ??? ??? ?if( arr[i+1] == '/')
?? ??? ??? ?{
?? ??? ??? ??? ?j = i + 2;
?? ??? ??? ??? ?return j;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?return 0;
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?return 0;
}
int main()
{
?? ?int len = 0;
?? ?int i = 0;
?? ?int k = 0;
?? ?int j = 0;
?? ?int z = 0;
?? ?char arr[128] = { '\0'};
?? ?printf("input a string:");
?? ?gets(arr);
?? ?len = strlen(arr);
?? ?printf("Output:\n");
?? ?
?? ?for( i = 0 ; i < len ;i++)
?? ?{
?? ??? ?if( arr[i] == '/')? 首先判断'/'
?? ??? ?{
?? ??? ??? ?if( arr[i+1] == '*')? //注释的第二个条件
?? ??? ??? ?{
?? ??? ??? ??? ?z = i;
?? ??? ??? ??? ?if( (j = test(arr,z))!=0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?for( ?; j < len ;j++,z++)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?arr[z] = arr[j];
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?for( ; z < len ;z++)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?arr[z] = '\0';
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?printf("The result is :");
?? ??? ??? ??? ??? ?printf("%s\n",arr);
?? ??? ??? ??? ??? ?return 0;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ? printf("comment is error\n");
?? ??? ??? ??? ? return 0;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?printf("comment is error\n");
?? ??? ??? ??? ?return 0;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?if( arr[i] == '*')
?? ??? ??? ?{
?? ??? ??? ??? ?if( arr[i+1] == '/')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("comment is error\n");
?? ??? ??? ??? ??? ?return 0;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?printf("The result is :");
?? ?printf("%s\n",arr);
?? ?return 0;
}