|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 菠菜小陈 于 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;
- }
复制代码
本帖最后由 jackz007 于 2021-9-5 10:29 编辑
看看你的循环条件
- while(((ch=getchar()) != '\n') && (ch >= 'A' && ch <= 'Z'))
复制代码
循环需要同时满足两个条件,当前字符 ch 不是回车,同时,ch 是大写字母,那么,很显然,当 ch 不是 '\n',也不是大写字母的时候,就会导致循环结束,后续的大写字母自然也就不能被统计到了。
所以,解决问题的关键是,不可以把 ch >= 'A' && ch <= 'Z' 作为循环的必备条件。
|
|