C++学生成绩统计程序执行后末尾多出Outstanding行如何解决?
问题根因
多余的输出来自main函数中printTable调用后的冗余逻辑:
// 以下为冗余代码 for (int i = 0; i < MAX_SIZE; ++i) { oneScore = studScores[i]; } average = mean(studScores, numStuds); printGrade(oneScore, average);
这段代码执行时,for循环遍历完所有成绩后,oneScore最终被赋值为最后一名学生的成绩(你的测试用例中为95分),后续又主动调用了一次printGrade输出该成绩对应的等级,就产生了末尾多余的Outstanding行。
修复方案
直接删除上述printTable调用后的全部冗余代码即可,你的printTable函数内部已经完成了所有学生信息的遍历、等级计算和输出工作,不需要额外再做等级输出。
可选优化建议
你当前的printTable函数中每遍历一个学生就调用一次mean函数重新计算平均值,属于重复计算,可以先在调用printTable前算好平均值,作为参数传入printTable,减少不必要的计算开销。
内容的提问来源于stack exchange,提问作者Rhea Trickannad
相关产品推荐
相关产品推荐

