题目地址:http://ac.jobdu.com/problem.php?cid=1040&pid=3
C语言源码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
char num[7];
char name[9];
int score;
}student;
student s[100000];
int cmp1(const void *a,const void *b)
{
student *aa=(student *)a;
student *bb=(student *)b;
return strcmp(aa->num,bb->num);
}
int cmp2(const void *a,const void *b)
{
student *aa=(student *)a;
student *bb=(student *)b;
if(strcmp(aa->name,bb->name)!=0)
return strcmp(aa->name,bb->name);
else
return strcmp(aa->num,bb->num);
}
int cmp3(const void *a,const void *b)
{
student *aa=(student *)a;
student *bb=(student *)b;
if(aa->score!=bb->score)
return aa->score-bb->score;
else
return strcmp(aa->num,bb->num);
}
int main()
{
int n,c,i,k;
scanf("%d %d",&n,&c);
k=1;
while(n)
{
for(i=0;i<n;i++)
{
getchar();
scanf("%s %s %d",s[i].num,s[i].name,&s[i].score);
}
switch(c)
{
case 1:qsort(s,n,sizeof(s[0]),cmp1);break;
case 2:qsort(s,n,sizeof(s[0]),cmp2);break;
default:qsort(s,n,sizeof(s[0]),cmp3);break;
}
printf("Case %d:\n",k);
for(i=0;i<n;i++)
printf("%s %s %d\n",s[i].num,s[i].name,s[i].score);
k++;
scanf("%d %d",&n,&c);
}
}