【发布时间】:2018-05-28 08:26:39
【问题描述】:
问题
这个程序给出了奇数的错误结果,因为第二个 case 语句也每次都执行。请告诉我为什么会这样。
计划
#include <stdio.h>
int main() {
int num,rem,te=0,to=0,e=0,o=0;
float ae,ao;
while (1) {
printf("\nEnter Number : ");
scanf("%d",&num);
if (num==0) break;
rem=num%2;
switch (rem) {
case 0 :
te+=num;
e++;
case 1 :
to+=num;
o++;
}
}
printf("\nTotal of even numbers : %d",te);
printf("\nTotal of odd numbers : %d",to);
printf("\nTotal of number of even numbers : %d",e);
printf("\nTotal of number of odd numbers : %d",o);
printf("\nAverage of even no. : %f",ae=te/e);
printf("\nAverage 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
【问题讨论】:
-
添加一个
break;这会有所帮助 -
te/e将导致int,您已经丢失了小数点后的数字。如果您的目标是准确性,那么将其分配给float毫无意义。 -
请投票,因为这不再是一个无效的问题。谢谢。
标签: c switch-statement case