正确的代码网友们给出来了,就是去掉while()外面的那个getchar的语句。
点工具——调试,可以查看程序运行过程,有问题要自己解决才对哦。多用调试更容易理解代码
//不说了今天好水逆,发代码也被度娘审核555,还没有吐出来555
//那个dev cpp 调试也用不了,给你凑合看borlandc的调试过程好了
输入五大写字符enter,ch='A'
第二个getchar后ch='S'
第三个getchar也要拿字符了
ch被赋了第三个字符'D'
第四个getchar,'F'
至此c++只被执行了两次,而getchar跑了四次
接下来的结果不解释,上图:
因为getchar,其实还按了一个回车
结果就是这样。好的代码需要勤于调试哦。
while循环中的le=getchar可以去掉。保留的话从输入中每读两个字符计数才加一,直到第一次遇到回车,最后结果相当于总数除以2。
首先你最后要return 0;
输入一串字符,写法不对,参考如下:
char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')
c++;
puts(a);
观察程序,发现:
在while循环的判断条件中,getchar()已经被执行一次,即缓存区中的大写字母被取出了一个并将这个大写字母赋值给了le.
随后在循环体中,又执行了一次getchar(),缓存区中的大写字母又被取出.
也就是说,一次循环实际上是取出了两个大写字母,并且以第二次取出的字符作为字母判断.
所以,在这个程序中,实际上被判断的有S, C 和输入完字符后的那个 回车符.
所以说,程序判定只有两个大写字母.
把循环语句中的getchar去掉即可写成: