鱼C论坛

 找回密码
 立即注册
查看: 936|回复: 3

[已解决]C语言break语句和continue语句01

[复制链接]
发表于 2023-12-28 20:00:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
最佳答案
2023-12-28 20:04:42
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 20:01:13 | 显示全部楼层
你好!你的代码有一些问题。首先,在使用变量之前,需要对其进行初始化,否则它们的初始值是不确定的。在这种情况下,变量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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-28 20:04:25 | 显示全部楼层
FishC 发表于 2023-12-28 20:01
你好!你的代码有一些问题。首先,在使用变量之前,需要对其进行初始化,否则它们的初始值是不确定的。在这 ...
请输入一个英语句子:I love you!
您输入的句子中,包含元音字母0个!
其中:a(0),e(0),i(0),o(0),u(0)%  
运行的还是有问题的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-28 20:04:42 | 显示全部楼层    本楼为最佳答案   
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 22:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表