如何在C语言switch-case中实现90-100分区间判断输出A等级
C语言用switch-case实现成绩区间判断的正确写法
你想通过switch-case判断学生成绩,当分数在90-100(含)时输出“A等级”,但原来的代码里case后直接写条件表达式不符合C语言语法——C语言要求case后面必须是常量表达式,不能是变量或条件判断语句。下面是修正后的写法,完全通过case部分实现区间判断:
错误代码回顾
int user_marks; printf("Enter your obatined marks to know your grade: ") scanf("%d", &user_marks); switch (user_marks) { case user_marks>=90 && user_marks<=100: printf("Your grade is A."); break; default: printf("Enter valid marks."); break; }
修正后的代码
#include <stdio.h> int main() { int user_marks; printf("请输入你的成绩以查看等级: "); scanf("%d", &user_marks); // 通过整数除法将成绩转换为可匹配的常量值 switch (user_marks / 10) { // 90-99分对应user_marks/10=9,100分对应user_marks/10=10 case 9: case 10: printf("该学生获得A等级\n"); break; default: printf("请输入有效的成绩(0-100)\n"); break; } return 0; }
说明
- 核心思路:利用整数除法的特性,把90-100这个区间的分数转换成
9或10这两个常量值,这样就能用case匹配。 - 补充了头文件
#include <stdio.h>和main函数框架,修复了原代码中printf语句末尾缺少分号的语法错误。 - 如果要扩展其他等级(比如80-89为B),只需继续添加对应的case即可。
内容的提问来源于stack exchange,提问作者Moosa Memon
相关产品推荐
相关产品推荐

