如何使用switch case控制语句实现学生成绩对应等级查询程序
C语言分数等级判定(switch case实现)
原代码问题说明
scanf("%d\n", &marks)中的\n是多余参数,会导致输入分数后需要额外输入内容才能继续执行,需要删除- 直接将原始分数作为switch的判断值,无法匹配区间判定规则,需要先对分数做整除10的映射处理
- 缺少分数合法性校验逻辑,也没有覆盖所有分数区间的匹配分支
判定规则
- 90-100 分对应等级 A
- 80-89 分对应等级 B
- 70-79 分对应等级 C
- 60-69 分对应等级 D
- 0-59 分对应等级 E
修正后可运行代码
#include <stdio.h> int main(){ int marks; printf("Enter your marks(0-100): "); scanf("%d", &marks); // 校验分数合法性 if (marks < 0 || marks > 100) { printf("输入的分数不合法,请输入0-100之间的整数\n"); return 0; } // 分数整除10映射为离散值,适配switch case逻辑 switch (marks / 10) { // 90-100分对应9、10两个值,利用case穿透合并处理 case 10: case 9: printf("Your Grade is A\n"); break; case 8: printf("Your Grade is B\n"); break; case 7: printf("Your Grade is C\n"); break; case 6: printf("Your Grade is D\n"); break; // 0-59分统一走default分支 default: printf("Your Grade is E\n"); break; } return 0; }
内容的提问来源于stack exchange,提问作者Kartik9000
相关产品推荐
相关产品推荐

