C和指针2.2

编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确地成对出现。

自己感触:编程之前要首先弄清楚题目需要我们做啥,刚开始我不是太明白,然后直接看的代码(不好的习惯),下面也是书上的代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
int braces;
braces=0;
while ((ch=getchar())!=EOF)
{
if (ch=='{')
{
braces+=1;
}
if (ch=='}')
{
if(braces==0)
printf("Extra closing brace!\n");
else
braces-=1;
}


}
if (braces>0)
{
printf("%d unmatched opening brace!\n",braces);
}
return EXIT_SUCCESS;
}


调试运行代码才明白:原来是输入一段话,包括你所有的按键盘上的,能匹配到{},注意while ((ch=getchar())!=EOF)   表示标准输入的结尾,EOF还可以表示文件结尾。  在运行过程中会让你不断输入,直到你按ctrl+d+回车,表示EOF。代码会检测{ }。 注意方法braces变量的处理,很好!


我自己重新写了下:

#include <iostream>
using namespace std;
void main()

int ch;
int brace=0;
//cout<<"please enter anything: \n";
while((ch=getchar())!=EOF)      //哇靠,一开始没加括号怎么调都调不出来!!!! 细节!理解!!!
{
if(ch=='{')
brace+=1;
if(ch=='}')
{
if(brace==0)
cout<<"extra close brace\n";
else
brace-=1;
}
//cout<<"please enter anything: \n";
}


  if(brace>0)
 cout<<brace<<"no match brace\n";
}

一开始调试了半天出来结果都有问题,但是仔细看了代码都没问题。然后发现while(ch=getchar()!=EOF)  ,,,,这里少了括号,优先级问题。。。看来编程不能三心二意!必须高度集中精力,否则你会浪费好多时间,以及不断的否定自己!

你可能感兴趣的:(C和指针)