为什么while循环这里要将getchar()赋值给ch,再进行判断?
为什么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;
} 输入1,2,3,4,5,6 getchar()函数运行一次取一个。下面的会ch会隔一个取个值’2‘、’4‘、’6‘ 本帖最后由 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 ;
}
学习到了
页:
[1]