#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct E{
char id[10];
char name[10];
int score;
}stu[100001];
bool cmp1(E a,E b){
return strcmp(a.id,b.id)<0;
}
bool cmp2(E a,E b){//按姓名非递减排序
int tmp=strcmp(a.name,b.name);
if(tmp!=0)
return tmp<0;
else return cmp1(a,b);
}
bool cmp3(E a,E b){
if(a.score!=b.score)
return a.score<b.score;
else return cmp1(a,b);
}
int main(){
int i,N,C,count=1;//N 是纪录的条数,C 是指定排序的列号
while(~scanf("%d%d",&N,&C)){//3 1
if(N==0) break;
for(i=0;i<N;i++)//000007 James 85
//000010 Amy 90
//000001 Zoe 60
//20180206
scanf("%s%s%d",stu[i].id,stu[i].name,&stu[i].score);
switch(C){
case 1:sort(stu,stu+N,cmp1);break;//C=1 时,按学号递增排序
case 2:sort(stu,stu+N,cmp2);break;//按姓名的非递减字典序排序
case 3:sort(stu,stu+N,cmp3);break;//按成绩的非递减排序
}
printf("Case %d:\n",count++);//Case 1:
for(i=0;i<N;i++)
printf("%s %s %d\n",stu[i].id,stu[i].name,stu[i].score);//000001 Zoe 60
//000007 James 85
//000010 Amy 90
}
return 0;
}
/*
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
0 0
样例输出:
Case 1:
000001 Zoe 60
000007 James 85
000010 Amy 90
Case 2:
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
Case 3:
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90*/
EXCEL排序
最新推荐文章于 2019-08-09 00:15:51 发布