综合练习一

10 分钟

这题把前面学的一次性串起来。给一组成绩,要输出:平均分、最高分、最低分、及格率(分数不低于 60 的占比),再排序看名次。用一次遍历就能同时求出总分、最大、最小和及格人数,最后 sort 一下排名。别的不多说,重点是把学过的零件拼成一个完整程序。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int s[] = {88, 55, 72, 90, 40};
    int n = 5, sum = 0, mx = s[0], mn = s[0], pass = 0;
    for (int x : s) {
        sum += x; mx = max(mx, x); mn = min(mn, x);
        if (x >= 60) pass++;
    }
    printf("平均%.1f 最高%d 最低%d 及格率%.0f%%\n",
           sum * 1.0 / n, mx, mn, pass * 100.0 / n);
    sort(s, s + n, greater<int>()); // 从高到低排名
    return 0;
}

易错点:算平均分和及格率要用小数,写成 sum/n 会因为整数除法把小数点后丢掉,记得乘 1.0 或改用 double。

小纸条

动手写完整。

登录 后可看答案

综合练习一 · C++ 入门 · op599 课程