题目大意:
如题所示
解题思路:
改一下cmp函数即可
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int id, grade;
char name[10] ;
} node;
node S[100005];
int cmp1(const void * x, const void * y) {
node * a = (node *)x;
node * b = (node *)y;
return a->id > b->id ? 1 : -1;
}
int cmp2(const void * x, const void * y) {
node * a = (node *)x;
node * b = (node *)y;
if(strcmp(a->name, b->name) != 0)
return strcmp(a->name, b->name) > 0 ? 1 : -1;
return a->id > b->id ? 1 : -1;
}
int cmp3(const void * x, const void * y) {
node * a = (node *)x;
node * b = (node *)y;
if(a->grade != b->grade)
return a->grade > b->grade ? 1 : -1;
return a->id > b->id ? 1 : -1;
}
int main() {
int n, c,i, cc = 0;
while(scanf("%d%d", &n, &c), n||c) {
for(i=0; i<n; i++)
scanf("%d%s%d", &S[i].id, S[i].name, &S[i].grade);
printf("Case %d:\n", ++cc);
if(c == 1)
qsort(S, n, sizeof(S[0]), cmp1);
if(c == 2)
qsort(S, n, sizeof(S[0]), cmp2);
if(c == 3)
qsort(S, n, sizeof(S[0]), cmp3);
for(i=0; i<n; i++)
printf("%06d %s %d\n", S[i].id, S[i].name, S[i].grade);
}
return 0;
}

被折叠的 条评论
为什么被折叠?



