文章

9

粉丝

0

获赞

29

访问

390

头像
成绩排序2.0 题解:
P1159 清华大学上机题
发布于2025年3月9日 17:52
阅读数 41

比较简单的题,最好想的思路就是定义一个结构体,包含num,和score。输入后用sort函数排序,需要注意

1:cmp函数逻辑不能出错,cmp的逻辑是:如果成绩相等,返回num小的;(else)如果成绩不等,返回成绩小的。

代码:int cmp(Stu a,Stu b){
    if(a.score == b.score) return a.num < b.num;
     else return a.score < b.score;

}

2:如果输入的时候,for循环从int i = 1;开始赋值,sort排序时末尾指针应指向stu+n+1;可以理解为末尾指针应当指向要排序数组的最后一个值再往后的一个单元,当指向这个单元后才会停止排序

代码:

for(int i = 1;i <= n;i++){
        cin >> stu[i].num >> stu[i].score;
    }

sort(stu,stu+n+1,cmp);

完整代码:

#include<bits/stdc++.h>
using namespace std;
typedef struct{
    int score,num;
}Stu;
int cmp(Stu a,Stu b){
    if(a.score == b.score) return a.num < b.num;//如果成绩相等
     else return a.score < b.score;
}
int main(){
    int n;
    cin >> n;
    Stu stu[105];
    for(int i = 1;i <= n;i++){
 &nb...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发