c语言小白😁,有没有大佬帮我发现一下有什么问题?☺️
8个回答
展开全部
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);
输入一串字符,写法不对,参考如下:
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 和输入完字符后的那个 回车符.
所以说,程序判定只有两个大写字母.
在while循环的判断条件中,getchar()已经被执行一次,即缓存区中的大写字母被取出了一个并将这个大写字母赋值给了le.
随后在循环体中,又执行了一次getchar(),缓存区中的大写字母又被取出.
也就是说,一次循环实际上是取出了两个大写字母,并且以第二次取出的字符作为字母判断.
所以,在这个程序中,实际上被判断的有S, C 和输入完字符后的那个 回车符.
所以说,程序判定只有两个大写字母.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询