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

新手求助:如何用C++函数实现三科成绩的最优与最差判定

帮你实现最优/最差成绩的函数化逻辑

嘿,作为编程新手能写出这样的代码已经很厉害了!你已经把输入科目、成绩和计算平均分的逻辑都拆成了函数,接下来只需要添加处理最优和最差成绩的函数就行。先指出个小问题:你的头文件写错啦,#include <std::string>应该改成#include <string>,否则编译会报错哦。

下面是修改后的完整代码,我添加了一个findBestAndWorst函数来专门处理最优和最差成绩的判断与输出,同时修正了头文件问题:

#include <iostream>
#include <string>  // 修正头文件

std::string subjectentry() {
    std::string name;
    std::cout << "Please enter your subject name: " << std::endl;
    std::cin >> name;
    return name;
}

float gradeentry() {
    float grade;
    std::cout << "Please enter your grade: " << std::endl;
    std::cin >> grade;
    return grade;
}

float Calculateaveragegrade(float grade1, float grade2, float grade3) {
    return (grade1 + grade2 + grade3) / 3;  // 简化写法,不用额外变量
}

// 新增函数:找出并输出最优和最差成绩对应的科目
void findBestAndWorst(const std::string& sub1, const std::string& sub2, const std::string& sub3, 
                      float g1, float g2, float g3) {
    // 先找出最高分和对应的科目
    float highest = g1;
    std::string bestSub = sub1;
    if (g2 > highest) {
        highest = g2;
        bestSub = sub2;
    }
    if (g3 > highest) {
        highest = g3;
        bestSub = sub3;
    }

    // 再找出最低分和对应的科目
    float lowest = g1;
    std::string worstSub = sub1;
    if (g2 < lowest) {
        lowest = g2;
        worstSub = sub2;
    }
    if (g3 < lowest) {
        lowest = g3;
        worstSub = sub3;
    }

    // 输出结果
    std::cout << bestSub << "成绩是最优成绩" << std::endl;
    std::cout << worstSub << "成绩是最差成绩" << std::endl;
}

int main() {
    std::cout << "This program compares 3 of your subject grades and calculates your average grade." << std::endl;
    
    std::string subjectname1 = subjectentry();
    std::string subjectname2 = subjectentry();
    std::string subjectname3 = subjectentry();
    
    float grade1 = gradeentry();
    float grade2 = gradeentry();
    float grade3 = gradeentry();
    
    float result = Calculateaveragegrade(grade1, grade2, grade3);
    std::cout << "Your average grade is " << result << "." << std::endl;
    
    // 调用新增的函数
    findBestAndWorst(subjectname1, subjectname2, subjectname3, grade1, grade2, grade3);
    
    return 0;
}

代码说明:

  • findBestAndWorst函数接收三个科目名称(用const std::string&传递,避免不必要的字符串拷贝,更高效)和三个成绩,通过两次简单的比较找出最高分和最低分对应的科目,然后输出要求的文本。
  • 我简化了Calculateaveragegrade函数的写法,直接返回计算结果,不需要额外创建变量,逻辑一样但更简洁。
  • 在main函数里,最后调用这个新增的函数,就完成了所有功能,main函数只负责调度各个功能函数,逻辑更清晰。

这样所有核心逻辑都拆分成了独立的函数,完全符合你的要求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:57:52