问题
这个程序给出了奇数的错误结果,因为每次都会执行第二个case语句。请告诉我为什么会这样。
程序
5.7.20
输出:
输入数字:1
输入数字:2
输入数字:3
输入数字:4
输入数字:5
输入数字:6
输入数字:0
偶数总数:12
奇数总数:21
偶数总数:3
奇数的总数:6
平均甚至没有。 :4.000000
奇数的平均数。 :3.000000
答案 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
是否为零。