排名

题目介绍

小Z忘记了他的考号,但现在他已经拿到了所有人的考号和成绩,并且知道了他自己的排名,请帮他找出自己的信息。
一共 \(n\) 个人参赛,小Z是第 \(m\) 名。

题目 & 代码思路

首先,我们定义两个数组,一个存储学号,一个存储成绩。因为题目描述中已经给出了参赛人数的上限,我们可以根据最大值 \(100\) 来定义数组的长度。
接下来,我们使用一个循环,依次输入每个人的学号和成绩,并将它们存储在对应的数组中。
接着,我们使用冒泡排序对成绩进行排序。冒泡排序是一种简单的排序算法,它通过相邻元素的比较和交换来实现排序。我们将成绩按降序排列,同时在交换成绩时也要同时交换对应的学号,以保持学号和成绩的对应关系。
最后,我们根据题目要求,输出排序后的第 \(m\) 名的学号和成绩。

代码实现

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    // 定义一个数组存储学号和成绩
    int student_id[100];
    double score[100];

    // 依次输入学号和成绩
    for (int i = 0; i < n; i++) {
        cin >> student_id[i] >> score[i];
    }

    // 对成绩进行排序
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (score[j] < score[j+1]) {
                // 交换成绩
                swap(score[j], score[j+1]);
                // 交换学号
                swap(student_id[j], student_id[j+1]);
            }
        }
    }

    // 输出韩承煊的学号和成绩
    cout << student_id[m-1] << " " << score[m-1] << endl;

    return 0;
}
posted @ 2023-11-25 08:21  卡布叻-空白  阅读(21)  评论(0)    收藏  举报