综合练习一
约 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。
小纸条
动手写完整。
登录 后可看答案