题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/3f27a0a5a59643a8abf0140b9a8cf1f7

#include <cstdio>
#include <algorithm>
using namespace std;
struct Student{
    char name[50];
    int grade;
    int seq;
};
bool comp1(Student lsh,Student rsh){
    if (lsh.grade<rsh.grade){
        return true;
    } else if(lsh.grade==rsh.grade && lsh.seq < rsh.seq){
        return true;
    }
    else{
        return false;
    }
}
bool comp0(Student lsh,Student rsh){
    if (lsh.grade>rsh.grade){
        return true;
    }  else if(lsh.grade==rsh.grade && lsh.seq < rsh.seq){
        return true;
    }else{
        return false;
    }
}
int main(){
    int N;
    int order;
    Student arr[100];
    while (scanf("%d%d",&N,&order)!=EOF){
        int seq=0;
        for (int i = 0; i < N; ++i) {
            scanf("%s%d",arr[i].name,&arr[i].grade);//name是一个字符,字符自动是地址。
            arr[i].seq=seq;
            ++seq;
        }
        if (order==0){
            sort(arr,arr+N, comp0);
        } else if(order==1){
            sort(arr,arr+N, comp1);
        } else{
            return -1;
        }
        for (int i = 0; i < N; ++i) {
            printf("%s %d\n",arr[i].name,arr[i].grade);
        }
    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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