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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在C中执行所有其他情况,如何停止switch语句? [关闭]相关的知识,希望对你有一定的参考价值。

问题

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

程序

#include <stdio.h>

int main() {

    int num,rem,te=0,to=0,e=0,o=0;
    float ae,ao;

    while (1) {

    printf("
Enter Number : ");
    scanf("%d",&num);
    if (num==0) break;
    rem=num%2;
    switch (rem) {

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

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

    }
}   
printf("
Total of even numbers : %d",te);
printf("
Total of odd numbers : %d",to);
printf("
Total of number of even numbers : %d",e);
printf("
Total of number of odd numbers : %d",o);
printf("
Average of even no. : %f",ae=te/e);
printf("
Average of odd no. : %f",ao=to/o);        

getchar();
return 0;
}

输出:

输入数字:1

输入数字:2

输入数字:3

输入数字:4

输入数字:5

输入数字:6

输入数字:0

偶数总数:12

奇数总数:21

偶数总数:3

奇数总数:6

平均甚至没有。 :4.000000

奇数的平均数。 :3.000000

答案

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不为零。

另一答案

在每个案例的最后添加break;

switch (rem) {

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

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

以上是关于如果在C中执行所有其他情况,如何停止switch语句? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

c语言中switch的用法 c语言中switch怎么使用

c语言case

c语言 switch的用法

switch语句 switch语句的相关知识

当我在一个线程执行(在activemq cpp中)中捕获特定值时,如何终止/停止所有其他线程?

switch 中没有break 如何执行