题解 | #成绩排序#
成绩排序
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;
}
查看15道真题和解析