|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么while循环这里要将getchar()赋值给ch,再进行判断?
- #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;
- }
复制代码
直接用getchar()!='\n'却不行?
- #include <stdio.h>
- int main()
- {
- int ch, count = 0;
- printf("请输入一行英文句子:");
- while ( getchar() != '\n')
- {
- ch=getchar();
- if (ch >= 'A' && ch <= 'Z')
- {
- count = count + 1;
- }
- }
- printf("你总共输入了%d个大写字母!\n", count);
- return 0;
- }
复制代码
本帖最后由 jackz007 于 2021-11-4 12:14 编辑
因为每次执行 getchar() 都会从键盘读取一个字符,代码经你改过以后,每次循环都会从键盘读取 2 个字符,第 1 个专门用于判断是否是 '\n' ,第 2 个才会用于判断是否是大写英文字母。
如果一定要改,可以这样改:
- include <stdio.h>
- int main(void)
- {
- int ch , count = 0 ;
- printf("请输入一行英文句子:") ;
- while (1) { // 无限循环
- ch = getchar() ;
- if(ch != '\n') {
- if (ch >= 'A' && ch <= 'Z') count ++ ;
- } else {
- break ; // 跳出循环
- }
- }
- printf("你总共输入了%d个大写字母!\n" , count) ;
- return 0 ;
- }
复制代码
|
|