如何在C++中对多个变量使用相同条件进行测试
解决C++中多变量复用条件判断逻辑的问题
嘿,我瞅见你这段成绩分级代码里有两个核心问题得处理:
- 首先,你定义的
marks变量从来没被赋值成物理(P)、化学(C)或数学(M)的分数,直接用它做判断完全是在拿随机值瞎跑逻辑,这肯定不对; - 其次,要是给三个科目都用一模一样的分级规则,重复写三次if-else不仅啰嗦,以后要调整等级标准(比如把及格线改成55分),得改三处地方,很容易漏。
最优雅的解决办法是把分级逻辑封装成一个函数,这样三个科目都能调用同一个函数来获取等级,既避免重复代码,也方便维护。
修正后的完整代码
#include <iostream> using namespace std; // 封装成绩分级逻辑的函数:输入分数,返回对应的等级字符 char getGrade(int score) { if (score < 50) { return 'F'; // 用F代表Fail,也可以返回字符串,这里统一用单字符更简洁 } else if (score <= 60) { return 'C'; } else if (score <= 70) { return 'B'; } else if (score <= 80) { return 'A'; } else { return 'A+'; // 补全原代码未写完的高分分支 } } int main() { int P, C, M; cout << "Grading System\n\n"; cout << "Enter Marks in Phy: "; cin >> P; cout << "Enter Marks in Chem: "; cin >> C; cout << "Enter Marks in Maths: "; cin >> M; cout << "\nGrades\n"; cout << "Physics: " << getGrade(P) << endl; cout << "Chemistry: " << getGrade(C) << endl; cout << "Maths: " << getGrade(M) << endl; return 0; }
代码说明
- 封装函数:
getGrade函数接受一个整数分数参数,根据规则返回对应的等级字符。不管有多少个科目,只要调用这个函数就行,逻辑只需要维护一次。 - 修复原代码bug:直接移除了未赋值的
marks变量,把每个科目的分数(P、C、M)直接传入函数,彻底解决了无意义判断的问题。 - 灵活调整:如果需要返回"Fail"这类完整字符串,只需把函数返回类型改成
string,返回对应字符串即可,比如:
string getGrade(int score) { if (score < 50) { return "Fail"; } else if (score <= 60) { return "C"; } // 其他分支同理修改 }
这样你的代码不仅逻辑正确,还变得更整洁、更易于维护啦!
内容的提问来源于stack exchange,提问作者Prince
相关产品推荐
相关产品推荐

