题解 | #成绩排序#
成绩排序
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;
}

查看7道真题和解析