Problem B: 删除嵌套注释

Problem B: 删除嵌套注释

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 8   Solved: 7
[ Submit][ Status][ Web Board]

Description

大家在C语言课程当中一定接触过注释。注释主要是用来表明程序用意的,不作为程序编译的一部分。C语言当中使用“/*”和“*/”来标记注释的。“/*”和“*/”之间的部分可以标注当前程序的用意,例如以下C语言程序:

/*将要定义一个整数*/

int i;

然而,注释当中是不可以嵌套注释的,例如以下程序所用到的注释就是非法的:

/*将要定义一个整数/*这个整数是用来作为计数器的*/*/

int i;

Input

一段写好的程序,其中可能含有注释的嵌套。(为简单起见,测试数据中不包含空行。)注释一律独立成行(也就是说一行当中不同时包含需要编译的代码和注释,也不会同时包含多余一个的完整注释),例如以下两个代码是不出现的:

情况1

int a = 0; /*定义*/

情况2

int a = 0; /*/*非法*/注释*/ /*合法注释*/

现在给你一段写好的程序,请你开发一个新的编译辅助工具将其中非法的注释整个删除。

Output

删除非法注释后的代码。

Sample Input

#include <stdio.h>
int main()
{
    /*int a;
    /*printf("%d",&a);*/*/
return 0;
/*返回*/
}

Sample Output

#include <stdio.h>
int main()
{
return 0;
/*返回*/
}

HINT

这一题,最主要的在于判断:

1.如何停止的问题:既然他们都单独成行,所以停止的标志是'}'!

2.怎么单独得到一行:一行结束的标志是'\n',得到'\n'停止就可以了!

3.如何判断是不是嵌套注释:这里我是遇到'/'或者'*'都作标记,遇到则加一,只有这个数为0(表示没有注释)或者4(表示只有一个注释)

#include<stdio.h>
#include<string.h>
int main()
{
	char c,a[100],i=0,j=0,k;
    while(scanf("%c",&c))
	{
		if(c!='}')
		{
			if(c!='\n')
			{
				a[i++]=c;
				if(c=='/'||c=='*')
				{
					j++;
				}
			}
			else
			{
				if(j==4||j==0)
				{
					for(k=0;k<i;k++)
					{
						printf("%c",a[k]);
					}
					printf("\n");
				}
				i=j=0;
			}
		}
		else
		{
			printf("}\n");
			break;
		}
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值