C语言中用switch语句把成绩分级

>=90分为A,>=80为B,>=70为C....

#include <stdio.h>
main()
{
int i,b;
float a[5];

for(i=0;i<=4;i++)
scanf("%f",&a[i]);

for(i=0;i<=4;i++)
{
b=a[i]/10;
switch(b)
{
case 10:
case 9:
printf("%f\t%c\n",a[i],'A');
case 8:
printf("%f\t%c\n",a[i],'B');
case 7:
printf("%f\t%c\n",a[i],'C');
case 6:
printf("%f\t%c\n",a[i],'D');
default:
printf("%f\t%c\n",a[i],'E');
}
}
}

这里case语句后面没用“break;”,就会出现这种情况:输入90 80 70 60 50 ,90被执行了5次,出现ABCD;80被执行4次,出现BCD;以此类推......为什么?
90/10为9,那么case8 case7 case6 的语句应该跳过吧
图片

每一次case做完都要break, 如果不break的话会继续判断下面case.追问

我输入90.那么switch(b)里的b=9,就算继续判断下面的case(case 8,case7....)也会不执行吧?

追答

执行, 直到遇到break。 你图上的结果不是很显然了。
90 执行ABCDE
80 执行BCDE
70 执行CDE
60 执行DE
50 执行E
只有你break之后, 才会重新判断switch(b).

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-07
break的作用是跳出循环或switch语句,如果没有break,case...就被连续执行了
第2个回答  2012-03-07
其实for更简单