题解 | #成绩排序#

成绩排序

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define len 1009
#define maxint 1<<31-1

typedef struct student{
    char name[1000];
    int grade;
    int num;
}stu;

stu initial_stu(char name[],int grade,int num){
    stu st;
    strcpy(st.name,name);
    st.grade = grade;
    st.num = num;
    return st;
}

stu stu_list[len];

int flag;

int cmp(const void*s1,const void*s2){
    stu a1 = *(stu*)s1;
    stu a2 = *(stu*)s2;
    if(a1.grade==a2.grade){
        return a1.num-a2.num;
    }
    return flag==1?a1.grade-a2.grade:a2.grade-a1.grade;
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        scanf("%d",&flag);
        char name[1000];
        int grade;
        for(int i = 0;i<n;i++){
            scanf("%s %d",name,&grade);
            stu_list[i] = initial_stu(name,grade,i);
        }
        qsort(stu_list,n,sizeof(stu),cmp);
        for(int i = 0;i<n;i++){
            stu st = stu_list[i];
            printf("%s %d\n",st.name,st.grade);
        }
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务