top1编程
← 返回题目
题解

【入门】优秀成绩的平均分

1 条题解

  • 0
    @ 2026-7-31 10:08:55

    解题思路

    题目要求算出全班前 5 名的平均分。

    思路分两步:

    1. 先排序:把成绩从高到低排好(冒泡排序)
    2. 取前 5 个:排序后前 5 个就是前 5 名,加起来除以 5 就是平均分

    冒泡排序的原理:相邻两个数比较,如果前面的比后面的小就交换,这样一轮下来最大的数就冒到最后面。重复 n-1 轮,就全部排好序了。

    保留一位小数:用 printf 的 %.1f 格式,或者直接 sum/5.0 输出。

    参考代码

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main() {
        int n, a[100];
        cin >> n;
        for (int i = 0; i < n; i++) cin >> a[i];
    
        // 冒泡排序,从大到小
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                if (a[j] < a[j + 1]) {
                    int t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                }
            }
        }
    
        // 前5名平均分
        int sum = 0;
        for (int i = 0; i < 5; i++) sum += a[i];
        printf("%.1f\n", sum / 5.0);
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(N²),冒泡排序
    • 空间复杂度:O(N),一个数组存成绩
    • 1