解题思路:


用学生数组记录数据

自定义比较函数,利用 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.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论