题解 | #qsort解决成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
#include <ctype.h> #include <stdio.h> #include <stdlib.h> typedef struct{ char name[20]; int grade; } kk; int cmp1(const void*_a,const void*_b) { kk *a = (kk*)_a; kk *b = (kk*)_b; return (*a).grade - (*b).grade; } int cmp0(const void*_a,const void*_b) { kk *a = (kk*)_a; kk *b = (kk*)_b; return (*b).grade - (*a).grade; } int main() { int way = 0; int num = 0; kk data[200]; while (~scanf("%d",&num)) { scanf("%d",&way); for (int i = 0; i < num ; i++) { scanf("%s %d",data[i].name,&data[i].grade); } if(way == 1) qsort(data, num, sizeof(kk), cmp1); else if(way == 0) qsort(data, num, sizeof(kk), cmp0); for (int i = 0; i < num ; i++) { printf("%s %d\n",data[i].name,data[i].grade); } } }