C++成绩查询程序while循环与else if分支失效、仅单次运行问题
代码修复方案
原有代码缺陷
- 无外层循环结构:输入、计算、输出逻辑仅执行一次,无法实现多次查询成绩的需求
- 等级判断逻辑错误:所有区间判断错误使用逻辑或
||,而非限定区间需要的逻辑与&&,同时区间边界设置混乱,导致所有符合条件的总分都会命中第一个A等级分支,后续判断完全失效 - 总分输出异常:仅打印了"total"字符串,未输出实际计算得到的总分数值
- 无程序退出入口:如果增加循环功能,未提供用户主动退出程序的路径
修复后完整可运行代码
#include <iostream> #include <iomanip> using namespace std; int main() { char quitFlag; // 外层死循环支持多次查询 while (true) { int midterm; int final; cout << "请输入期中成绩:"; cin >> midterm; // 期中成绩合法性校验 while (midterm < 0 || midterm > 200) { cout << "输入无效,成绩范围为0-200,请重新输入期中成绩:"; cin >> midterm; } cout << "请输入期末成绩:"; cin >> final; // 期末成绩合法性校验 while (final < 0 || final > 200) { cout << "输入无效,成绩范围为0-200,请重新输入期末成绩:"; cin >> final; } int total = midterm + final; cout << "总成绩为:" << total << endl; // 修正后的等级判断逻辑 if (total >= 360 && total <= 400) { cout << "你的字母等级为 A" << endl; } else if (total >= 320 && total < 360) { cout << "你的字母等级为 B" << endl; } else if (total >= 280 && total < 320) { cout << "你的字母等级为 C" << endl; } else if (total >= 240 && total < 280) { cout << "你的字母等级为 D" << endl; } else { cout << "你的字母等级为 F" << endl; } // 退出逻辑 cout << "是否继续查询?输入y继续,输入n退出:"; cin >> quitFlag; if (quitFlag == 'n' || quitFlag == 'N') { break; } } return 0; }
内容的提问来源于stack exchange,提问作者Colton Gil
相关产品推荐
相关产品推荐

