题解 | #成绩排序#

成绩排序

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);
        }
    }

}

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
01-26 19:51
门头沟学院 Java
isabener:怎么感觉像群发的呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务