|
1鱼币
《带你学C带你飞》S1E13课后作业动动手第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, count = 0;
- printf("请输入一行英文句子:");
- while (getchar() != '\n')
- {
- ch = getchar();
- if (ch >= 'A' && ch <= 'Z')
- {
- count = count + 1;
- }
- }
- printf("你总共输入了%d个大写字母!\n", count);
- return 0;
- }
复制代码
我的代码的运行结果如图所示
为什么会出现这样的结果呢,或者说为什么一定要将getchar()返回的内容在while后的()内赋值给ch才可以呢?
本帖最后由 HandsonYe 于 2022-4-7 12:34 编辑
- #include <stdio.h>
- int main()
- {
- int ch, count = 0;
- printf("请输入一行英文句子:");
- while (getchar() != '\n') //拿第一次循环为例,第一个getchar的值为'I’ != '\n'
- {
- ch = getchar(); //第二个getchar的值为' '(空格)
- if (ch >= 'A' && ch <= 'Z')
- {
- count = count + 1;
- }
- }
- printf("你总共输入了%d个大写字母!\n", count);
- return 0;
- }
复制代码while中的getchar()和循环中的getchar()是依次获得了第一个和第二个字符,有多少个getchar就会依次获取多少次字符,并不是获取同一个字符
|
最佳答案
查看完整内容
while中的getchar()和循环中的getchar()是依次获得了第一个和第二个字符,有多少个getchar就会依次获取多少次字符,并不是获取同一个字符
|