鱼C论坛

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

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

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

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

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

x
本帖最后由 liyifeng295641 于 2024-1-3 16:03 编辑

题目如下:
0. 写一个程序,统计用户输入的字符串中,各个元音字母出现的次数(包含大小写的 a、e、i、o、u)。


                               
登录/注册后可看大图


我写的:
  1. #include <stdio.h>

  2. int main(){

  3.         char ch;
  4.         int a, e, i, o, u, sum = 0;

  5.         printf("请输入一个英语句子:");

  6.         ch = getchar();
  7.         do{
  8.                 if(ch == 'a' && ch == 'A'){
  9.                         a++;
  10.                         sum += a;
  11.                         continue;
  12.                 }else if(ch == 'e' && ch == 'E'){
  13.                         e++;
  14.                         sum += e;
  15.                         continue;
  16.                 }else if(ch == 'i' && ch == 'I'){
  17.                         i++;
  18.                         sum += i;
  19.                         continue;
  20.                 }else if(ch == 'o' && ch == 'O'){
  21.                         o++;
  22.                         sum += o;
  23.                         continue;
  24.                 }else if(ch == 'u' && ch == 'U'){
  25.                         u++;
  26.                         sum += u;
  27.                         continue;
  28.                 }
  29.         }while(ch != '\n');
  30.         printf("您输入的句子中,包含元音字母%d个!\n", sum);
  31.         printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
  32.        
  33.         return 0;
  34. }
复制代码

问题,开始我用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'时,条件才成立。但实际上,你只需要其中一个条件成立就可以。

另外,你要注意到字符的大小写是有区分的,而你的代码中没有考虑到这一点。

修复上述问题后,你的代码应该像这样:
  1. #include <stdio.h>
  2. int main() {
  3.     char ch;
  4.     int a=0, e=0, i=0, o=0, u=0, sum = 0;
  5.    
  6.     printf("请输入一个英语句子:");
  7.     while ((ch = getchar()) != '\n') {
  8.         if (ch == 'a' || ch == 'A') {
  9.             a++;
  10.             sum++;
  11.         } else if (ch == 'e' || ch == 'E') {
  12.             e++;
  13.             sum++;
  14.         } else if (ch == 'i' || ch == 'I') {
  15.             i++;
  16.             sum++;
  17.         } else if (ch == 'o' || ch == 'O') {
  18.             o++;
  19.             sum++;
  20.         } else if (ch == 'u' || ch == 'U') {
  21.             u++;
  22.             sum++;
  23.         }
  24.     }
  25.    
  26.     printf("您输入的句子中,包含元音字母%d个!\n", sum);
  27.     printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
  28.    
  29.     return 0;
  30. }
复制代码

这段修复后的代码可以正确统计输入字符串中元音字母出现的次数(包含大小写)。希望能够帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 20:01:13 | 显示全部楼层
你好!你的代码有一些问题。首先,在使用变量之前,需要对其进行初始化,否则它们的初始值是不确定的。在这种情况下,变量a、e、i、o、u都应该初始化为0。

其次,你的条件判断有问题。在if语句中,你使用了逻辑与运算符(&&),这意味着只有当ch既等于'a'又等于'A'时,条件才成立。但实际上,你只需要其中一个条件成立就可以。因此,应该使用逻辑或运算符(||):
  1. if(ch == 'a' || ch == 'A'){
  2.     a++;
  3.     sum++;
  4.     continue;
  5. } else if(ch == 'e' || ch == 'E'){
  6.     e++;
  7.     sum++;
  8.     continue;
  9. } else if(ch == 'i' || ch == 'I'){
  10.     i++;
  11.     sum++;
  12.     continue;
  13. } else if(ch == 'o' || ch == 'O'){
  14.     o++;
  15.     sum++;
  16.     continue;
  17. } else if(ch == 'u' || ch == 'U'){
  18.     u++;
  19.     sum++;
  20.     continue;
  21. }
复制代码

最后,你的do-while循环没有更新ch的值,导致循环进入无限循环。你需要在循环内部添加`ch = getchar();`来获取下一个字符。

修复上述问题后,你的代码应该像这样:
  1. #include
  2. int main(){
  3.     char ch;
  4.     int a=0, e=0, i=0, o=0, u=0, sum = 0;
  5.     printf("请输入一个英语句子:");
  6.     ch = getchar();
  7.     do{
  8.         if(ch == 'a' || ch == 'A'){
  9.             a++;
  10.             sum++;
  11.         } else if(ch == 'e' || ch == 'E'){
  12.             e++;
  13.             sum++;
  14.         } else if(ch == 'i' || ch == 'I'){
  15.             i++;
  16.             sum++;
  17.         } else if(ch == 'o' || ch == 'O'){
  18.             o++;
  19.             sum++;
  20.         } else if(ch == 'u' || ch == 'U'){
  21.             u++;
  22.             sum++;
  23.         }
  24.         ch = getchar(); // 获取下一个字符
  25.     }while(ch != '\n');
  26.      
  27.     printf("您输入的句子中,包含元音字母%d个!\n", sum);
  28.     printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
  29.     return 0;
  30. }
复制代码

希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-28 20:04:25 | 显示全部楼层
FishC 发表于 2023-12-28 20:01
你好!你的代码有一些问题。首先,在使用变量之前,需要对其进行初始化,否则它们的初始值是不确定的。在这 ...
  1. 请输入一个英语句子:I love you!
  2. 您输入的句子中,包含元音字母0个!
  3. 其中: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'时,条件才成立。但实际上,你只需要其中一个条件成立就可以。

另外,你要注意到字符的大小写是有区分的,而你的代码中没有考虑到这一点。

修复上述问题后,你的代码应该像这样:
  1. #include <stdio.h>
  2. int main() {
  3.     char ch;
  4.     int a=0, e=0, i=0, o=0, u=0, sum = 0;
  5.    
  6.     printf("请输入一个英语句子:");
  7.     while ((ch = getchar()) != '\n') {
  8.         if (ch == 'a' || ch == 'A') {
  9.             a++;
  10.             sum++;
  11.         } else if (ch == 'e' || ch == 'E') {
  12.             e++;
  13.             sum++;
  14.         } else if (ch == 'i' || ch == 'I') {
  15.             i++;
  16.             sum++;
  17.         } else if (ch == 'o' || ch == 'O') {
  18.             o++;
  19.             sum++;
  20.         } else if (ch == 'u' || ch == 'U') {
  21.             u++;
  22.             sum++;
  23.         }
  24.     }
  25.    
  26.     printf("您输入的句子中,包含元音字母%d个!\n", sum);
  27.     printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)", a, e, i, o, u );
  28.    
  29.     return 0;
  30. }
复制代码

这段修复后的代码可以正确统计输入字符串中元音字母出现的次数(包含大小写)。希望能够帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 15:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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