排名
题目介绍
小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;
}

浙公网安备 33010602011771号