题目
思路
首先我们知道每个学生成绩都不相同,因此正常排序即可,且每个学生都有学号和成绩两个量,所以我们可以用结构体来解。
先创建结构体,注意到成绩为浮点数。代码如下:
struct Student{
int num;
double chengji;
}a[105];
然后在主函数中输入n和k以及结构体数组a。代码如下:
int n;
int k;
cin>>n;
cin>>k;
for(int i=0;i<n;i++){
cin>>a[i].num>>a[i].chengji;
}
再进行排序,别忘了写algorithm头文件,比较函数这里我设的f。
sort(a,a+n,f);
比较函数里,将成绩从高到低降序排序。代码如下:
int f(Student x,Student y){
return x.chengji>y.chengji;
}
最后按顺序输出就可以了。
cout<<a[k-1].num<<" "<<a[k-1].chengji<<endl;
完整代码
#include<iostream>
#include<algorithm>
using namespace std;
struct Student{
int num;
double chengji;
}a[105];
int f(Student x,Student y){
return x.chengji>y.chengji;
}
int main(){
int n;
int k;
cin>>n;
cin>>k;
for(int i=0;i<n;i++){
cin>>a[i].num>>a[i].chengji;
}
sort(a,a+n,f);
cout<<a[k-1].num<<" "<<a[k-1].chengji<<endl;
return 0;
}