while语句课后题不明白
为什么我这样写统计的大写字母数是错误的啊?#include<stdio.h>
int main(){
int count=0;
printf("请输入一行英文句子:");
while((getchar())!='\n'){
if((getchar())<='Z'&&(getchar())>='A'){
count=count+1;
}
}
printf("大写字母个数为%d个\n",count);
return 0;
} 按你的写法,循环一次就直接读入 3 个字符了(有 3 次 getchar),应该一次循环读入一次字符
解决方法:建一个字符变量 ch,来存放每次读入的字符(原码↓)
直接帮你改好了:
#include<stdio.h>
int main() {
int count = 0;
char ch;
printf("请输入一行英文句子:");
while ((ch = getchar()) != '\n') {
if (ch <= 'Z' && ch >= 'A') {
count = count + 1;
}
}
printf("大写字母个数为%d个\n", count);
return 0;
} getchar()是用一次就获取一次。你while用了一次。然后if用了两次,一次判断小于'Z',另一次判断大于'A'。这是三个不同的字符分别作用。 405794672 发表于 2020-6-29 08:03
getchar()是用一次就获取一次。你while用了一次。然后if用了两次,一次判断小于'Z',另一次判断大于'A'。这 ...
楼上说得对,受教了
页:
[1]