题解 | #成绩排序#

成绩排序

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

全部评论

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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