| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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                                             ;
 
 - }
 
  复制代码 
 
 
 
 |   
 
 
 
 |