注意事项:
题目没说清楚。先按成绩升序排,成绩相同则按名字字母序升序排,再相同的话按年龄升序排。
参考代码:
#include
#include
#include
typedef struct Stu{
char name[101];
int age;
int score;
} Stu;
int cmp(const void *a, const void *b){
Stu *c = (Stu *)a;
Stu *d = (Stu *)b;
if(c->score != d->score) return c->score - d->score;
if(strcmp(c->name, d->name)) return strcmp(c->name, d->name);
return c->age - d->age;
}
int main()
{
Stu stus[1000];
int i, n;
while(scanf("%d", &n) != EOF){
getchar();
for(i = 0; i
scanf("%s%d%d", stus[i].name, &stus[i].age, &stus[i].score);
getchar();
}
qsort(stus, n, sizeof(stus[0]), cmp);
for(i = 0; i
printf("%s %d %d\n", stus[i].name, stus[i].age, stus[i].score);
}
}
return 0;
}