>=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 的语句应该跳过吧
图片
我输入90.那么switch(b)里的b=9,就算继续判断下面的case(case 8,case7....)也会不执行吧?
追答执行, 直到遇到break。 你图上的结果不是很显然了。
90 执行ABCDE
80 执行BCDE
70 执行CDE
60 执行DE
50 执行E
只有你break之后, 才会重新判断switch(b).