按成绩从高到低或从低到高,遍历所有同学,不需要先排序。
#include"stdio.h" #include"string.h" int main(void) { int i, j, flag = 0, n = 0, max = 0, min = 0; char name[200][32] = {0}; int num[200] = {0}; scanf("%d", &n); scanf("%d", &flag); for (i = 0; i < n; i++) { scanf("%s %d", name[i], &num[i]); if (num[i] > max) { max = num[i]; } if (num[i] < min) { min = num[i]; } } if (flag == 0) { for (i = max; i >= min; i--) { for (j = 0; j < n; j++) { if (num[j] == i) { printf("%s %d\n", name[j], num[j]); } } } } else { for (i = min; i <= max; i++) { for (j = 0; j < n; j++) { if (num[j] == i) { printf("%s %d\n", name[j], num[j]); } } } } return 0; }