#include <stdio.h>
#include <algorithm>
#include <string.h>
int c;
using namespace std;
struct E {
char idd[7];
char name[9];
int score;
bool operator < (const E &b)const{
int tp = strcmp(idd,b.idd);
if(c == 1 ) return tp < 0;
int tmp = strcmp(name,b.name);
if(c == 2 )
{
if(tmp == 0) return tp < 0;
else return tmp < 0;
}
if(c == 3)
{
if(score != b.score) return score < b.score;
else return tp < 0;
}
}
}buf[100000];
int main()
{
int n,count = 0;
while(scanf("%d%d",&n,&c)&&n)
{
for(int i = 0;i < n;i ++)
scanf("%s%s%d",&buf[i].idd,buf[i].name,&buf[i].score);
sort(buf,buf+n);
printf("Case %d:\n",++count);
for(int i = 0;i < n;i ++)
printf("%s %s %d\n",buf[i].idd,buf[i].name,buf[i].score);
}
return 0;
}
这个人写的程序更加工整
http://blog.youkuaiyun.com/leizh007/article/details/8510655