题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1862
心得:
用sort比较函数对结构体进行排序。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct {char ID[7]; char Name[9]; short Score;}STUDENT;
STUDENT st[100000];
bool cmp1(const STUDENT &st1,const STUDENT &st2){
return strcmp(st1.ID,st2.ID)<0?1:0;
}
bool cmp2(const STUDENT &st1,const STUDENT &st2){
return (strcmp(st1.Name,st2.Name)<0 || (strcmp(st1.Name,st2.Name)==0 && strcmp(st1.ID,st2.ID)<0))?1:0;
}
bool cmp3(const STUDENT &st1,const STUDENT &st2){
return (st1.Score<st2.Score || (st1.Score==st2.Score && strcmp(st1.ID,st2.ID)<0))?1:0;
}
int main(){
int n,c,i,t=1;
while(~scanf("%d%d",&n,&c),n || c){
for(i=0;i<n;i++)
scanf("%s%s%d",&st[i].ID,&st[i].Name,&st[i].Score);
if (c==1) sort(st,st+n,cmp1);
else if(c==2) sort(st,st+n,cmp2);
else if(c==3) sort(st,st+n,cmp3);
printf("Case %d:\n",t++);
for(i=0;i<n;i++)
printf("%s %s %d\n",st[i].ID,st[i].Name,st[i].Score);
}
return 0;
}