做了很久的题。。。。求指点。一个下午哈哈我菜求指点
本题输入一段符合C语言的表达式语句,其中可能会含有C/C++的注释,要求输出不带注释的语句。
输入格式:
输入一段符合C语言的表达式语句。
输出格式:
**### 输出不带任意注释的语句,
特别需要注意的是:
1. /*xxx*/标记的注释需要被替换成1个空格。
2. //标记的注释的内容直接全部删除,包括双斜杠//也被删除,不被任何字符替代
3. 需要考虑转义字符\,双引号",单引号'的问题,如"//aab"就不是注释了。
4. 若vc编译器与gcc编译器对注释删除结果不一致,以gcc和notepad软件删除结果为准。(gcc -E test.c 可以看到删除注释的结果)**
输入样例:
char str[]="//fff/*d*/";
/*str*/z"//abc\\"//abc
/ * * /
"//abc\\"//def"//ghk //supported by panxiaoting
"//abc\\\"//def"//ghk //supported by panxiaoting
输出样例:
在这里给出相应的输出。例如:
char str[]="//fff/*d*/";
z"//abc\\"
/ * * /
"//abc\\"
"//abc\\\"//def"
自己写的有问题。。。混乱,强大的IT友人给我点指示吧,膜拜
#include<stdio.h>
void one();
void two();
int main(){
int str1,str2,str3,str4;
while ((str1= getchar()) != EOF)
{
if(str1=='/')
{
if((str2=getchar())=='*')
{
putchar(str1);
putchar(str2);
one();
}
else if(str2=='/')
{
two();
}
else
{
putchar(str1);
putchar(str2);
}
}
else if(str1=='\'' || str1==' " ')
{
putchar(str1);
while((str2=getchar())!=str1)
{
putchar(str2);
if(str2=='\\')
{
putchar(getchar());
}
}
putchar(str2);
}
else
{
putchar(str1);
}
}
return 0;
}
void one()
{
int str_1,str_2;
str_1=getchar();
str_2=getchar();
while(str_1!='*'&&str_2!='/')
{
str_1=str_2;
str_2=getchar();
}
putchar(str_1);
putchar(str_2);
}
void two()
{
int str_1;
str_1=getchar();
while(str_1!='\n'){
str_1=getchar();
}
}
#笔试题目#void one();
void two();
int main(){
int str1,str2,str3,str4;
while ((str1= getchar()) != EOF)
{
if(str1=='/')
{
if((str2=getchar())=='*')
{
putchar(str1);
putchar(str2);
one();
}
else if(str2=='/')
{
two();
}
else
{
putchar(str1);
putchar(str2);
}
}
else if(str1=='\'' || str1==' " ')
{
putchar(str1);
while((str2=getchar())!=str1)
{
putchar(str2);
if(str2=='\\')
{
putchar(getchar());
}
}
putchar(str2);
}
else
{
putchar(str1);
}
}
return 0;
}
void one()
{
int str_1,str_2;
str_1=getchar();
str_2=getchar();
while(str_1!='*'&&str_2!='/')
{
str_1=str_2;
str_2=getchar();
}
putchar(str_1);
putchar(str_2);
}
void two()
{
int str_1;
str_1=getchar();
while(str_1!='\n'){
str_1=getchar();
}
}