题解 | #成绩排序#
成绩排序
http://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
//由于这个条件:相同成绩都按先录入排列在前的规则处理。
//导致排序方法不同也会影响结果正确性!!!
//TMD 又浪费时间在拍错上了
//审题一定要仔细啊!!!!!!!!!!
//导致排序方法不同也会影响结果正确性!!!
//TMD 又浪费时间在拍错上了
//审题一定要仔细啊!!!!!!!!!!
//*xtj #include<stdio.h> #include<string.h> #define CD 50 struct JL { char name[30]; int grade; }; void swap(struct JL a, struct JL b); int main() { int n = 0; int dir = 0; while (scanf("%d %d\n", &n,&dir) != EOF) { // scanf("%d", &dir); struct JL input[n]; for (int i = 0; i < n; i++) { scanf("%s %d", &(input[i].name), &(input[i].grade)); } if (dir)//从小到大 { //由于这个条件:相同成绩都按先录入排列在前的规则处理。 //导致排序方法不同也会影响结果正确性!!! //TMD 又浪费时间在拍错上了 //审题一定要仔细啊!!!!!!!!!! for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n-1-i; j++) { if (input[j].grade > input[j+1].grade) { // swap(input[i], input[j]); struct JL temp; temp = input[j+1]; input[j+1] = input[j]; input[j] = temp; } } } } else//从大到小 { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n-1-i; j++) { if (input[j].grade < input[j+1].grade) { // swap(input[i], input[j]); struct JL temp; temp = input[j+1]; input[j+1] = input[j]; input[j] = temp; } } } } for (int i = 0; i < n; i++) { printf("%s %d\n", input[i].name, input[i].grade); } } return 0; } void swap(struct JL a, struct JL b) { struct JL temp; temp = a; a = b; b = temp; }