c语言第13课计算英文句子中大写字母个数问题
本帖最后由 菠菜小陈 于 2021-9-5 10:39 编辑问题:为什么按照代码1的形式只能进行一次循环?只能计算出输入的第一个字符是不是大写字母?(代码1是自己写的,代码2是答案
#include <stdio.h>
int main()
{
int ch, i=0;
printf("请输入一串英文句子;\n");
while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
{
i = i + 1;
}
printf("您总共输入了%d个大写字母\n",i);
return 0;
}
#include <stdio.h>
int main()
{
int ch, count = 0;
printf("请输入一行英文句子:");
while ((ch = getchar()) != '\n')
{
if (ch >= 'A' && ch <= 'Z')
{
count = count + 1;
}
}
printf("你总共输入了%d个大写字母!\n", count);
return 0;
} 我的代码
#include <stdio.h>
int main()
{
int ch, i=0;
printf("请输入一串英文句子;\n");
while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
{
i = i + 1;
}
printf("您总共输入了%d个大写字母\n",i);
return 0;
} 本帖最后由 jackz007 于 2021-9-5 10:29 编辑
看看你的循环条件
while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
循环需要同时满足两个条件,当前字符 ch 不是回车,同时,ch 是大写字母,那么,很显然,当 ch 不是 '\n',也不是大写字母的时候,就会导致循环结束,后续的大写字母自然也就不能被统计到了。
所以,解决问题的关键是,不可以把 ch >= 'A' && ch <= 'Z' 作为循环的必备条件。 jackz007 发表于 2021-9-5 10:27
看看你的循环条件
循环需要同时满足两个条件,当前字符 ch 不是回车,同时,ch 是大写 ...
知道了,感谢🙏
页:
[1]