题解 | #成绩排序#
成绩排序
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);
}
}
}
嘉士伯公司氛围 425人发布