C语言break语句和continue语句01
本帖最后由 liyifeng295641 于 2024-1-3 16:03 编辑题目如下:
0. 写一个程序,统计用户输入的字符串中,各个元音字母出现的次数(包含大小写的 a、e、i、o、u)。
https://xxx.ilovefishc.com/forum/201603/08/045950mc8ivx4887fl6z7l.png
我写的:
#include <stdio.h>
int main(){
char ch;
int a, e, i, o, u, sum = 0;
printf("请输入一个英语句子:");
ch = getchar();
do{
if(ch == 'a' && ch == 'A'){
a++;
sum += a;
continue;
}else if(ch == 'e' && ch == 'E'){
e++;
sum += e;
continue;
}else if(ch == 'i' && ch == 'I'){
i++;
sum += i;
continue;
}else if(ch == 'o' && ch == 'O'){
o++;
sum += o;
continue;
}else if(ch == 'u' && ch == 'U'){
u++;
sum += u;
continue;
}
}while(ch != '\n');
printf("您输入的句子中,包含元音字母%d个!\n", sum);
printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
return 0;
}
问题,开始我用while循环来写,然后可以运行,可以sum没有累加,a,e,i,o,u。都没累加。@FishC 你好!你的代码有一些问题。首先,在使用变量之前,需要对其进行初始化,否则它们的初始值是不确定的。在这种情况下,变量a、e、i、o、u都应该初始化为0。
其次,你的条件判断有问题。在if语句中,你使用了逻辑与运算符(&&),这意味着只有当ch既等于'a'又等于'A'时,条件才成立。但实际上,你只需要其中一个条件成立就可以。因此,应该使用逻辑或运算符(||):
if(ch == 'a' || ch == 'A'){
a++;
sum++;
continue;
} else if(ch == 'e' || ch == 'E'){
e++;
sum++;
continue;
} else if(ch == 'i' || ch == 'I'){
i++;
sum++;
continue;
} else if(ch == 'o' || ch == 'O'){
o++;
sum++;
continue;
} else if(ch == 'u' || ch == 'U'){
u++;
sum++;
continue;
}
最后,你的do-while循环没有更新ch的值,导致循环进入无限循环。你需要在循环内部添加`ch = getchar();`来获取下一个字符。
修复上述问题后,你的代码应该像这样:
#include
int main(){
char ch;
int a=0, e=0, i=0, o=0, u=0, sum = 0;
printf("请输入一个英语句子:");
ch = getchar();
do{
if(ch == 'a' || ch == 'A'){
a++;
sum++;
} else if(ch == 'e' || ch == 'E'){
e++;
sum++;
} else if(ch == 'i' || ch == 'I'){
i++;
sum++;
} else if(ch == 'o' || ch == 'O'){
o++;
sum++;
} else if(ch == 'u' || ch == 'U'){
u++;
sum++;
}
ch = getchar(); // 获取下一个字符
}while(ch != '\n');
printf("您输入的句子中,包含元音字母%d个!\n", sum);
printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
return 0;
}
希望对你有帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-28 20:01
你好!你的代码有一些问题。首先,在使用变量之前,需要对其进行初始化,否则它们的初始值是不确定的。在这 ...
请输入一个英语句子:I love you!
您输入的句子中,包含元音字母0个!
其中:a(0),e(0),i(0),o(0),u(0)%
运行的还是有问题的! liyifeng295641 发表于 2023-12-28 20:04
请输入一个英语句子:I love you!
您输入的句子中, ...
抱歉,我之前的回答有误。你的代码逻辑仍然存在问题。
问题出在`if`语句的条件判断上。你使用了逻辑与运算符(&&),这意味着只有当ch既等于'a'又等于'A'时,条件才成立。但实际上,你只需要其中一个条件成立就可以。
另外,你要注意到字符的大小写是有区分的,而你的代码中没有考虑到这一点。
修复上述问题后,你的代码应该像这样:
#include <stdio.h>
int main() {
char ch;
int a=0, e=0, i=0, o=0, u=0, sum = 0;
printf("请输入一个英语句子:");
while ((ch = getchar()) != '\n') {
if (ch == 'a' || ch == 'A') {
a++;
sum++;
} else if (ch == 'e' || ch == 'E') {
e++;
sum++;
} else if (ch == 'i' || ch == 'I') {
i++;
sum++;
} else if (ch == 'o' || ch == 'O') {
o++;
sum++;
} else if (ch == 'u' || ch == 'U') {
u++;
sum++;
}
}
printf("您输入的句子中,包含元音字母%d个!\n", sum);
printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
return 0;
}
这段修复后的代码可以正确统计输入字符串中元音字母出现的次数(包含大小写)。希望能够帮到你!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]