您现在的位置是:主页 > news > 互联网站源码/互联网营销专家
互联网站源码/互联网营销专家
admin2025/5/14 13:36:01【news】
简介互联网站源码,互联网营销专家,2022最新新闻,哪家网站建设做的好编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确地成对出现。 自己感触:编程之前要首先弄清楚题目需要我们做啥,刚开始我不是太明白,然后直接看的代码(不好的习惯),…
编写一个程序,它从标准输入读取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) ,,,,这里少了括号,优先级问题。。。看来编程不能三心二意!必须高度集中精力,否则你会浪费好多时间,以及不断的否定自己!