1 条题解

  • 0
    @ 2026-1-28 13:06:45
    #include <bits/stdc++.h>
    using namespace std;
    
    // [1] 定义学生结构体,存储学号(m,整数类型)和成绩(s,浮点类型)
    struct student{
        int m;
        double s;
    };
    
    int main(){
        // [2] n-学生总数(1 < n ≤ 100);k-需要查询的目标名次(1 ≤ k ≤ n)
        int n,k;
        // [3] a数组-存储n个学生的信息,1-based索引(方便名次与数组索引直接对应),最多支持101个元素
        student a[101];
        // [4] 读取学生总数和目标名次
        cin >> n >> k;
        // [5] 循环读取n个学生的学号和成绩,存入数组a
        for (int i = 1; i <= n;i++){
            cin >> a[i].m >> a[i].s;
        }   
        // [6] 冒泡排序:按成绩降序排列学生数组(成绩高的学生在前,低的在后)
        for (int i = 1; i < n;i++){
            for (int j = i + 1; j <= n;j++){
                // [7] 如果前一个学生的成绩小于后一个,交换两者位置,确保降序
                if (a[i].s < a[j].s)
                    swap(a[i],a[j]);
            }
        }
        // [8] 输出第k名学生的学号
        cout << a[k].m << " ";
        // [9] 用printf("%g")输出成绩,%g会自动去掉小数末尾的零和多余的小数点(如68.400→68.4)
        printf("%g",a[k].s);
        return 0;
    }
    
    • 1

    信息

    ID
    1019
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者