You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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;
}

代码说明

  1. 封装函数:getGrade函数接受一个整数分数参数,根据规则返回对应的等级字符。不管有多少个科目,只要调用这个函数就行,逻辑只需要维护一次。
  2. 修复原代码bug:直接移除了未赋值的marks变量,把每个科目的分数(P、C、M)直接传入函数,彻底解决了无意义判断的问题。
  3. 灵活调整:如果需要返回"Fail"这类完整字符串,只需把函数返回类型改成string,返回对应字符串即可,比如:
string getGrade(int score) {
    if (score < 50) {
        return "Fail";
    } else if (score <= 60) {
        return "C";
    }
    // 其他分支同理修改
}

这样你的代码不仅逻辑正确,还变得更整洁、更易于维护啦!

内容的提问来源于stack exchange,提问作者Prince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:34:18