题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1862
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100005
typedef struct Node
{
char data[7];
char name[10];
int score;
} Node;
Node node[N];
//重写cmp后,qsort就能按照你所写的去排序
int cmp1(const void *a, const void *b)
{
Node* c = (Node*)a;
Node* d = (Node*)b;
return (strcmp(c->data,d->data));
}
int cmp2( const void *a, const void *b )
{
Node* p1 = (Node*)a;
Node* p2 = (Node*)b;
if(strcmp(p1->name,p2->name)==0)
return (strcmp(p1->data,p2->data));
else
return (strcmp(p1->name,p2->name));
}
int cmp3( const void *a, const void *b )
{
Node *c = (Node *)a;
Node *d = (Node *)b;
if(c->score == d->score)
return (strcmp(c->data,d->data));
else
return c->score - d->score;
}
int main()
{
int n,c,i,flag=1;
while(scanf("%d %d",&n,&c)&&(n||c))
{
printf("Case %d:\n",flag++);
for(i=0; i<n; i++)
scanf("%s %s %d",node[i].data,node[i].name,&node[i].score);
if(c == 1)
qsort(node,n,sizeof(node[0]),cmp1);
if(c == 2)
qsort(node,n,sizeof(node[0]),cmp2);
if(c == 3)
qsort(node,n,sizeof(node[0]),cmp3);
for(i=0; i<n; i++)
printf("%s %s %d\n",node[i].data,node[i].name,node[i].score);
}
return 0;
}