C++成绩评级代码修复求助:输出错误+需实现低分循环输入
成绩等级评定代码问题修复与重复输入功能实现
原代码的核心问题
- 条件判断写法错误:C/C++不支持
grades > 80 < 70这类连续比较,必须用&&连接两个独立条件,原代码的区间逻辑完全混乱,导致等级判断失效。 - 未调用评定函数:主函数读取分数后,没有执行
mygrade函数,且printf语句缺少参数、输出内容错误。 - 无重复输入逻辑:未实现低分重复输入的需求。
- 语法与拼写问题:
void main()不符合C++标准,存在Distinciton、vaild这类拼写错误,且引入了未使用的头文件。
修正后的完整代码
#include <stdio.h> void mygrade(int grades) { if (grades >= 90) printf("High distinction"); else if (grades >= 80 && grades < 90) printf("Your Grade is Distinction"); else if (grades >= 70 && grades < 80) printf("Credit"); else if (grades >= 50 && grades < 70) printf("Pass"); else if (grades < 50) printf("Fail"); else printf("Enter valid Marks"); } int main() { int grades; do { printf("Enter your score for this unit\n"); scanf("%d", &grades); printf("Your grade for this unit is: "); mygrade(grades); putchar('\n'); if (grades < 50) printf("Score too low, please re-enter.\n"); } while (grades < 50); return 0; }
修改说明
- 修复区间判断:重新定义每个等级的分数区间,用
&&连接上下限,确保逻辑正确:- 90及以上:High distinction
- 80-89:Distinction
- 70-79:Credit
- 50-69:Pass
- 低于50:Fail
- 完善主函数逻辑:调用
mygrade输出等级,修正printf的错误,添加do-while循环实现低分重复输入——只要输入分数低于50,就重复提示用户重新输入。 - 修正语法细节:改用标准的
int main(),移除无用头文件,修正拼写错误。
内容的提问来源于stack exchange,提问作者Muhammad Hozaifa
相关产品推荐
相关产品推荐

