这题就定义三个比较函数想好排序顺序就好了。
#include <string.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAX 100001
struct Student{
char id[7];
char name[9];
int score;
};
Student student[MAX];
bool compare1(Student x, Student y){
return strcmp(x.id,y.id)<0;
}
bool compare2(Student x, Student y){
return strcmp(x.name,y.name)<0;
}
bool compare3(Student x, Student y){
return x.score<y.score;
}
int main(){
int N,C,i;
int cnt = 1;
while(scanf("%d %d",&N,&C)!=EOF){
if(N==0) break;
for(i = 0 ;i < N ; i++) scanf("%s %s %d",student[i].id,student[i].name,&student[i].score);
sort(student,student+N,compare1);
switch(C){
case 1:break;
case 2:stable_sort(student,student+N,compare2) ;break;
case 3:stable_sort(student,student+N,compare3) ;break;
}
printf("Case %d:\n",cnt++);
for(i = 0 ;i < N ; i++) printf("%s %s %d\n",student[i].id,student[i].name,student[i].score);
}
return 0;
}