题解
【入门】考试成绩的分布情况
1 条题解
-
0
解题思路
题目要求统计全班成绩的平均分、达到平均分的人数、低于平均分的人数。
思路:
- 读入所有成绩,同时累加总分
- 平均分 = 总分 ÷ 人数
- 再遍历一遍,分别统计 >= 平均分 和 < 平均分的人数
- 输出平均分(保留 1 位小数)和两个人数
为什么要遍历两遍? 第一遍要先算出平均分(需要总分数),第二遍才能拿每个成绩和平均分比较。
注意:算平均分要用 s * 1.0 / n,让除法变成小数除法,不然整数除法会丢小数。
举例:成绩 100 98 97 99 90
- 总分 484,平均 484÷5 = 96.8
-
= 96.8 的有 4 个,< 96.8 的有 1 个
- 输出 96.8 4 1
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int n, a[100], s = 0, c = 0, d = 0; double avg; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; s += a[i]; } avg = s * 1.0 / n; for (int i = 0; i < n; i++) { if (a[i] >= avg) c++; if (a[i] < avg) d++; } cout << fixed << setprecision(1) << avg; cout << " " << c << " " << d; return 0; }复杂度分析
- 时间复杂度:O(N),遍历两遍数组
- 空间复杂度:O(N),一个数组存成绩
- 1