题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1
#include <stdio.h>
typedef struct score{
char name[10];
int score;
} SCORE;
void SelectionSort(SCORE *p,int n,int (*compare)(int a,int b));
int Ascending(int a,int b);
int Descending(int a,int b);
int main() {
int n,order;
while((scanf("%d",&n)!=EOF)&&scanf("%d",&order)!=EOF){
SCORE *p=(SCORE *)malloc(sizeof(SCORE)*n);
for(int i=0;i<n;i++){
scanf("%s %d",p[i].name,&p[i].score);
getchar();
}
if(order==1) SelectionSort(p,n,Ascending);
else SelectionSort(p,n,Descending);
for(int i=0;i<n;i++){
printf("%s %d",p[i].name,p[i].score);
puts("");
}
}
return 0;
}
void SelectionSort(SCORE *p,int n,int (*compare)(int a,int b)){
SCORE temp;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1;j++){
if(compare(p[j].score,p[j+1].score)){
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
int Ascending(int a,int b){
return a>b;
}
int Descending(int a,int b){
return a<b;
}
