|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 liyifeng295641 于 2024-1-3 16:03 编辑
题目如下:
0. 写一个程序,统计用户输入的字符串中,各个元音字母出现的次数(包含大小写的 a、e、i、o、u)。
我写的:
- #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
抱歉,我之前的回答有误。你的代码逻辑仍然存在问题。
问题出在`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 小助理,如未能正确解答您的问题,请继续追问。
|
|