B4078 [CSP-X2019 山东] 统计成绩

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

本题考查二维数组。

使用二维数组 w[i][j] 表示第 i 个人的第 j 门课程的分数。在读取后,使用 avg[i] 表示第 i 门课程的平均分。注意,平均分可能是个小数,因此使用 double 类型变量存储。

平均分的计算方式为,先计算该门课程所有人的得分总和,之后除以 n。随后,再从 1 循环到 n,统计每个人的对应课程的分数是否 大于或等于 平均分。使用 cnt[j] 记录第 j 个人达到或超过平均分的次数。

参考代码(部分):

for (int i = 1; i <= m; i++) { //因为是对每门课程做计算,因此是循环到 m
    for (int j = 1; j <= n; j++) //计算平均分
        avg[i] += w[j][i];
    avg[i] /= n;
    for (int j = 1; j <= n; j++) {
        if (w[j][i] >= avg[i]) //比较每个人对应课程的分数与平均分
            cnt[j]++;
    }
}