题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

struct Student{
    char name[50];
    int score;
  	//用一个序号来判断学生的顺序在比较器中使用
    int seq; //序号
};

bool increase(Student s1, Student s2){
    //成绩大的往后,其他不变
    if(s1.score < s2.score){
        return true;
    }else if(s1.score == s2.score && s1.seq < s2.seq){
        return true;
    }
    return false;
}

bool decrease(Student s1, Student s2){
    //成绩大的往前,其他不变
    if(s1.score > s2.score){
        return true;
    }else if(s1.score == s2.score && s1.seq < s2.seq){
        return true;
    }
    return false;
}

int main() {
    int n;//人数
    int way;//排序的方式 0为降序 1为升序
    Student stu[10000];
    while(scanf("%d%d", &n, &way) != EOF){
        for(int i = 0; i < n; i++){
            stu[i].seq = i;
            scanf("%s %d", stu[i].name, &stu[i].score);
        }

        if(1 == way){
            sort(stu, stu + n, increase);
        }else{
            sort(stu, stu + n, decrease);
        }
        for(int i = 0; i < n; i++){
            printf("%s %d\n", stu[i].name, stu[i].score);
        }
    }

}

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务