题目要求
已知学生成绩(100分为满分)与等级的对应关系为:
成绩(grade) 等级
90<=grade<=100 A 80<=grade<90 B 70<=grade<80 C 60<=grade<70 D grade<60 E
请你编写一个程序,要求:输入学生成绩,输出学生成绩对应的等级。(提示:使用switch….case语句)
思路分析
如果是有if语句,那就超级好代码,但是用switch...case,也不是不行,但是要处理分数的问题,如果成绩刚好是60,70,80,90,100,正好case可以一个一个的对应,如果有同学成绩是67分,那岂不是得依次顺下来?case 70,case 69,case 68,case 67?...
这不就是有毛病呢,编程是得用脑子,仔细想想 90分和99分,成绩等级是不是都是A? 60分和69分的等级是不是都是D?
考0分的和考59分的是不是都是E?
假如小明成绩94分,这个分数除以10,int型取整,是不是9? ,case 9 是不是可以为A,在90-100分里,不关91,95,96,99,都是A,能明白意思吧?
假如小明成绩56分,这个分数除以10,int型取整,是不是5? ,case 5 是不是可以为E,在60分以下里,不关23,14,59,都是E,能明白意思吧? case 0, case 1,case 2,case 3,case 4 case 5 的结果都为E,能理解吧?
成绩除以10.就只需要case 0,到case 10,简化了代码
看看代码,真是妙不可言
代码演示
#include<stdio.h>
int main()
{
double score;
printf("请输入分数:\n");
scanf("%lf",&score);
switch((int)(score/10))
{
case 10:
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:
case 4:
case 3:
case 2:
case 1:
case 0:printf("E(不及格)\n");break;
default:printf("Error!\n");
}
}
验证结果



本文介绍了一种使用switch-case语句实现的成绩等级评定程序,该程序通过将学生分数除以10并取整,来简化成绩等级的判断流程,提高了代码的效率和简洁性。
1739





