新手求助:如何用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
相关产品推荐
相关产品推荐

