题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1
#include <stdio.h> #include <stdlib.h> struct Stu{ char name[20]; int score; int num; }stu[100]; int cmp1(struct Stu *a,struct Stu *b){ if(a->score==b->score){ return a->num-b->num; } else{ return a->score-b->score; } } int cmp2(struct Stu *a,struct Stu *b){ if(a->score==b->score){ return a->num-b->num; } else{ return b->score-a->score; } } int main() { int num,method; while(scanf("%d\n%d",&num,&method)!=EOF){ for(int i=0;i<num;i++){ scanf("%s %d",stu[i].name,&stu[i].score); stu[i].num=i; } if(method){ qsort(stu,num,sizeof(stu[0]),cmp1); } else{ qsort(stu,num,sizeof(stu[0]),cmp2); } for(int i=0;i<num;i++){ printf("%s %d\n",stu[i].name,stu[i].score); } } return 0; }