C++初学者如何简化计算班级成绩平均分的冗余代码
代码优化方案
你这段代码的核心冗余点是重复书写了10次结构完全一致的输入、读取逻辑,还单独定义了10个独立变量存储单个成绩,完全可以用循环处理重复流程,配合累加变量统计总分,大幅压缩重复代码,后续如果需要调整学员人数也只需要改一个数值,不用重写大段重复逻辑。
优化后的参考代码如下:
#include <iostream> using namespace std; int main() { double total_score = 0; const int student_num = 10; for (int i = 1; i <= student_num; ++i) { double mark; cout << "Input mark for learner " << i << ": "; cin >> mark; total_score += mark; } double average = total_score / student_num; cout << "The class average mark is: " << average << endl; return 0; }
优化点说明
- 去掉了10个独立的成绩变量,用循环变量
i自动生成学员序号,不需要手写1到10的序号 - 不需要等所有成绩输入完再统一求和,输入一个成绩就直接累加到总分变量里,节省不必要的内存占用
- 把学员总数定义为常量
student_num,后续如果要统计20人、50人的平均分,只需要修改这个常量的值即可,不用改动循环、计算的相关逻辑 - 给输入提示补了冒号和尾部空格,交互时光标不会直接贴在提示文字末尾,使用体验更好
如果追求更短的代码长度,还可以进一步合并临时变量,但不建议为了短牺牲代码可读性,上面的写法已经兼顾简洁度和可维护性。
内容的提问来源于stack exchange,提问作者Zaheer Letang
相关产品推荐
相关产品推荐

