如果在C中执行所有其他情况,如何停止switch语句?

时间:2017-12-14 09:38:54

标签: c switch-statement case

问题

这个程序给出了奇数的错误结果,因为每次都会执行第二个case语句。请告诉我为什么会这样。

程序

5.7.20
  

输出:

     

输入数字:1

     

输入数字:2

     

输入数字:3

     

输入数字:4

     

输入数字:5

     

输入数字:6

     

输入数字:0

     

偶数总数:12

     

奇数总数:21

     

偶数总数:3

     

奇数的总数:6

     

平均甚至没有。 :4.000000

     

奇数的平均数。 :3.000000

2 个答案:

答案 0 :(得分:2)

在每个案例的末尾添加break;

switch (rem) {

    case 0 :
        te+=num;
        e++;
        break;

    case 1 :
        to+=num;
        o++;
        break;
}

答案 1 :(得分:2)

C中的switch具有跟进功能,这意味着程序控制会遇到您输入的情况下的情况。您可以使用break语句取消该效果:

switch (rem){
case 0:
    te+=num;
    e++;
    break;
case 1:
    to+=num;
    o++;
}

在你的情况下你可以使用相当简单的

if (num % 2){
    to += num;
    ++o;
} else {
    te += num;
    ++e;
}

并且还要注意您的平均值将以整数算术计算。请改用1f * te / e,注意检查e是否为零。