如果在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语句? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章