题解
【入门】求各个科目成绩的平均分
1 条题解
-
0
解题思路
题目要求计算 n 个同学语文、数学、英语三科的平均分,各保留一位小数。
思路:
- 用一个二维数组存成绩:a[i][0] 是第 i 个同学的语文,a[i][1] 是数学,a[i][2] 是英语
- 分别把三科的总分累加起来
- 各科总分除以人数 n,就得到平均分
- 用 fixed 和 setprecision(1) 保留一位小数
为什么要用 w*1.0/n? 因为 w 是整数,w/n 是整数除法会丢小数。乘 1.0 变成小数,结果才是正确的平均值。
fixed 和 setprecision 是什么? 它们是 iomanip 库里的控制符:fixed 表示固定小数位,setprecision(1) 表示保留 1 位小数。
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int n, a[100][100]; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < 3; j++) { cin >> a[i][j]; } } int w = 0, s = 0, y = 0; for (int i = 0; i < n; i++) w += a[i][0]; // 语文 for (int i = 0; i < n; i++) s += a[i][1]; // 数学 for (int i = 0; i < n; i++) y += a[i][2]; // 英语 cout << fixed << setprecision(1) << w * 1.0 / n << " " << s * 1.0 / n << " " << y * 1.0 / n; return 0; }复杂度分析
- 时间复杂度:O(N),读入和累加都是线性
- 空间复杂度:O(N),二维数组存成绩
- 1