题目描述
编写一个程序,从键盘输入读取C源代码,并验证所有的花括号都正确地成对出现。
输入
若干行英文程序代码
输出
若全部正确输出"Yes",若出现不匹配的右花括号,则输出"No(-1)"并结束程序,
若有不匹配的左花括号,则输出"No(不匹配的左花括号个数)"。
样例输入
while((ch = getchar()) != EOF){
if(ch == '}' && count > 0){
count--; }
}
样例输出
No(-1)
提示
需要注意的是:文件结束符EOF,在Windows下为组合键Ctrl+Z,在Unix/Linux下为组合键Ctrl+D
代码
#include<stdio.h>
int main(){
char ch;
int count=0;
while( (ch=getchar())!=EOF ){
if(ch=='{' )
count++;
else if( ch=='}'&&count==0 )
{
printf("No(-1)\n");
return 0;
}
else if(ch=='}'&&count!=0)
count--;
}
if(count==0)
printf("Yes\n");
if(count>0)
printf("No(%d)\n",count);
return 0;
}
在本题中学会用EOF控制循环,同时注意在不好用普通数组等方法时,可以另寻思路,从数量上来判断。