case后面是不是不能做比较,只能用整数型表示
#include <stdio.h>int main()
{
int i;
printf("请输入成绩:");
scanf("%d", &i);
switch (i)
{
case i >= 90: printf("A\n"); break;
case i >= 80 && i < 90: printf("B\n"); break;
case i >= 70 && i < 80: printf("C\n"); break;
case i >= 60 && i < 70: printf("D\n"); break;
case i < 60: printf("E\n"); break;
default: printf("请输入合法的数字!\n"); break;
}
return 0;
}
那这个程序应该怎么改 本帖最后由 昨非 于 2021-1-21 15:42 编辑
switch-case多分支语句要求:
switch后面跟表达式,case后面跟常量(常量表达式)
#include <stdio.h>
int main()
{
int i;
printf("请输入成绩:");
scanf("%d", &i);
switch (i/10)
{
case 10: printf("S\n"); break;
case 9: printf("A\n"); break;
case 8: printf("B\n"); break;
case 7: printf("C\n"); break;
case 6: printf("D\n"); break;
case 5: printf("E\n"); break;
case 4: printf("E\n"); break;
case 3: printf("E\n"); break;
case 2: printf("E\n"); break;
case 1: printf("E\n"); break;
case 0: printf("E\n"); break;
default: printf("请输入合法的数字!\n"); break;
}
return 0;
}
而且你既然想这么写,为何不用if-else语句呢? switch(i / 10){
case 10 :
case9 : printf("A\n") ; break ;
case8 : printf("B\n") ; break ;
case7 : printf("C\n") ; break ;
case6 : printf("D\n") ; break ;
case5 :
case4 :
case3 :
case2 :
case1 :
case0 : printf("E\n") ; break ;
default : printf("Invalid score !\n") ; break ;
} 补充一句,case语句中,在没有break的分支中,会一直往下执行到最后
所以就可以实现如三楼所说的那种简化形式 昨非 发表于 2021-1-21 15:44
补充一句,case语句中,在没有break的分支中,会一直往下执行到最后
所以就可以实现如三楼所说的那种简化 ...
OK
页:
[1]