勤奋的计算机系学生(简单处理)

题目描述
计算机系的同学从大一就开始学习程序设计语言了。初学者总是容易写出括号不匹配的程序。至今你仍然清楚地记得,那天上机的时候你的程序编译出错,虽然你使尽了吃奶的力气也没有把错误逮着。你实在没有办法只得举手向老师请教。结果老师走过来一看,板着脸,指着屏幕,很不高兴地冲着你说:“括号!括号!括号没有匹配!”自那以后,你痛定思痛决定写一个程序,帮助分析程序的括号是否出错,以免再出洋相。为了简化工作,你假定程序的注释、字符常量、字符串常量中都不包含括号,同时你只检查()[]{}这三种括号。

输入
输入为多组数据,最后一组数据以@结束,其余每组数据以#结束。@与#不会出现在正常程序中。每个程序含有不超过255个括号字符,程序长度不确定。

输出
每组数据输出一行,如果括号匹配无误则输出"Wonderful",括号匹配出现问题则输出"Be Careful"(请注意大小写和拼写错误,这些问题都将导致Wrong Answer)。 你只要关心括号是否匹配,不需要在意其余的语法错误。

样例输入
int main()
{
return 0;
}

int main()
{
@
样例输出
Wonderful
Be Careful

#include 
#include 
#include 
void Judge(char a);
int main()
{
	char c[2000];		//储存数据
	char bra[256];		//储存括号
	int i = 0;
	int brt = 0;
	memset(bra, '\0', 256);
	memset(c, '\0', 2000);
	while ((c[i++] = getchar()) != '@');
	for (i = 0; i < 2000; i++)
	{	
		if (c[i] == '@')
		{
			Judge(bra[0]);
			break;
		}
		//
		
		if (c[i] == '{' || c[i] == '(' || c[i] == '[' || c[i] == '}' || c[i] == ')' || c[i] == ']')
		{
			bra[brt] = c[i];
			if (bra[brt] - 1 == bra[brt - 1] || bra[brt] - 2 == bra[brt - 1])
			{
				bra[brt - 1] = bra[brt] = '\0';
				brt -= 2;
			}
			brt += 1;
		}
		//
		
		if (c[i] == '#')
		{
			Judge(bra[0]);
			memset(bra, '\0', 256);	//每次判断完清空
			brt = 0;
		}
	}
	return 0;
}
void Judge(char a)
{
	if (a=='\0')
		printf("Wonderful\n");
	else
		printf("Be Careful\n");
}

还是萌新一枚,可能很多地方的表达不标准。

你可能感兴趣的:(acm)