题解 | #成绩排序#

成绩排序

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

#include <stdio.h>

typedef struct Student{
    char name[20];
    int score;
    int order;
}Student;
int cmp0(const void*a,const void*b){
    if(((Student*)a)->score==((Student*)b)->score){
        return ((Student*)a)->order>((Student*)b)->order;//按输入顺序升序
    }
    return ((Student*)a)->score<((Student*)b)->score;//按分数降序
}
int cmp1(const void*a,const void*b){
    if(((Student*)a)->score==((Student*)b)->score){
        return ((Student*)a)->order>((Student*)b)->order;//按输入顺序升序
    }
    return ((Student*)a)->score>((Student*)b)->score;//按分数升序
}
int main() {
    int n,rule;
    while(~(scanf("%d%d",&n,&rule))){//这里的scanf里面的"%d\n%d"加不加\n都行
        Student arr[n];
        for(int i=0;i<n;++i){
            scanf("%s %d",&arr[i].name,&arr[i].score);
            arr[i].order=i;
        }
        if(rule==0){//按分数降序
            qsort(arr,n,sizeof(Student),cmp0);
        }
        if(rule==1){//按分数升序
            qsort(arr,n,sizeof(Student),cmp1);
        }
        for(int i=0;i<n;++i){
            printf("%s %d\n",arr[i].name,arr[i].score);
        }
    }
    return 0;
}

全部评论

相关推荐

哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务