前言
NWAFU 2019阶段1_3
一、题目描述
题目描述
编写一个程序,从键盘输入读取C源代码,并验证所有的花括号都正确地成对出现。
输入
若干行英文程序代码
输出
若全部正确输出"Yes",若出现不匹配的右花括号,则输出"No(-1)"并结束程序,
若有不匹配的左花括号,则输出"No(不匹配的左花括号个数)"。
样例输入
while((ch = getchar()) != EOF){
if(ch == '}' && count > 0){
count--; }
}
样例输出
No(-1)
提示
需要注意的是:文件结束符EOF,在Windows下为组合键Ctrl+Z,在Unix/Linux下为组合键Ctrl+D
二、设计步骤
今天的主角叫计数器,遇到 '{' 自增,遇到 '}' 自减,若所有花括号成功配对,则自增与自减相互抵消,count == 0。
代码实现:
#include<stdio.h>
#define _CRT_SECURE_NO_WORNINGS 1
int main(void)
{
int count = 0; //主角!!!!!!!!
char ch;
while((ch = getchar()) != EOF){
if(ch == '{')
count++;
if(ch == '}' && count == 0){
printf("No(-1)\n");
return 0;
}
if(ch == '}' && count > 0){
count--;
}
}
if(count) //若count > 0,则有未配对的{
printf("No(%d)",count);
else
printf("Yes");
printf("\n");
return 0;
}
总结
EOF