CodeRookie


私信TA

用户名:Shmily124

访问量:133451

签 名:

清风前烹茶对弈,明月下把酒言欢

等  级
排  名 14
经  验 22966
参赛次数 7
文章发表 39
年  龄 0
在职情况 学生
学  校 ZUA
专  业 计科

  自我简介:

悄悄地秃头,然后惊艳所有人?

解题思路:


用学生数组记录数据

自定义比较函数,利用 sort 函数排序

输出对应的下标[k - 1]的成员学号与成绩即可

注意事项:


题目要求 %g 输出分数,用 scanf 函数输出比较方便

但如果学号是string类型不能直接直接用 scanf 输出学号

参考代码:

#include <bits/stdc++.h>
 
using namespace std;
 
class stu {         //定义类 stu
public:
    string id;      //学号 
    double score;   //分数 
};
 
bool mycmp(stu a, stu b) {          //sort的比较函数 
    return a.score > b.score;
}
 
int main() {
    vector<stu> a;      //定义stu数组的容器 
    int n, k;           //定义 n 和 k 
    cin >> n >> k;      //输入 n 和 k  
    for (int i = 0; i < n; i++) {       //循环输入 
        stu temp;
        cin >> temp.id >> temp.score;   //输入temp的学号与分数 
        a.push_back(temp);              //添加temp到数组 
    }
 
    sort(a.begin(), a.end(), mycmp);    //sort函数排序 
    cout << a[k - 1].id;                //输出学号 
    printf(" %g", a[k - 1].score);      //输出分数 
     
    return 0; 
}


 

0.0分

34 人评分

  评论区

  • «
  • »