题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1028
C语言源码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
char ID[10];
char name[10];
int grade;
}student;
student stu[100010];
int C;
int cmp(const void *a,const void *b)
{
student *aa=(student *)a;
student *bb=(student *)b;
switch(C)
{
case 1:return strcmp(aa->ID,bb->ID);break;
case 2:if(strcmp(aa->name,bb->name)!=0)return strcmp(aa->name,bb->name);else return strcmp(aa->ID,bb->ID);break;
case 3:if(aa->grade!=bb->grade)return aa->grade-bb->grade;else return strcmp(aa->ID,bb->ID);break;
}
}
int main()
{
int n,i;
scanf("%d %d",&n,&C);
for(i=0;i<n;i++)
scanf("%s %s %d",stu[i].ID,stu[i].name,&stu[i].grade);
qsort(stu,n,sizeof(stu[0]),cmp);
for(i=0;i<n;i++)
printf("%s %s %d\n",stu[i].ID,stu[i].name,stu[i].grade);
return 0;
}