题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
//用冒泡法排序相等的单元就可以保持原顺序 #include <stdio.h> #include <string.h> int main() { int n, flag; scanf("%d\n%d", &n, &flag); char name[200][20]; int grade[200]; for (int i = 0; i < n; i++) { scanf("%s %d\n", name[i], &grade[i]); // printf("%s %d\n",name[i], grade[i]); } int t; char temp[20]; if (flag == 0) { for (int i = 0; i < n - 1; i++) { //printf("%s %d\n",name[i], grade[i]); for (int j = 0; j < n-1-i; j++) { if (grade[j] < grade[j+1]) { t = grade[j]; grade[j] = grade[j+1]; grade[j+1] = t; strcpy(temp, name[j]); strcpy(name[j], name[j+1]); strcpy(name[j+1], temp); //printf("%s %d\n",name[i], grade[i]); } } } } if (flag == 1) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n-1-i; j++) { if (grade[j] > grade[j+1]) { t = grade[j]; grade[j] = grade[j+1]; grade[j+1] = t; strcpy(temp, name[j]); strcpy(name[j], name[j+1]); strcpy(name[j+1], temp); } } } } for (int i = 0; i < n; i++) { } for (int i = 0; i < n; i++) { printf("%s %d\n", name[i], grade[i]); } return 0; }