终于能用上这个头文件的库函数了
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct stu{
int no;
char name[10];
int score;
};
bool cmp1(struct stu stu1, struct stu stu2);
bool cmp2(struct stu stu1, struct stu stu2);
bool cmp3(struct stu stu1, struct stu stu2);
int main(){
int N, C;
int flag = 1;
struct stu list[100010];
while(scanf("%d %d", &N, &C) != EOF){
if(N == 0){
break;
}
for(int i = 0; i < N; i++){
scanf("%d %s %d", &list[i].no, list[i].name, &list[i].score);
}
switch(C){
case 1:sort(list, list+N, cmp1);
break;
case 2:sort(list, list+N, cmp2);
break;
case 3:sort(list, list+N, cmp3);
break;
default: printf("啥也不是!!!");
}
printf("Case %d:\n", flag);
for(int i = 0; i < N; i++){
printf("%06d %s %d\n", list[i].no, list[i].name, list[i].score);
}
flag++;
}
return 0;
}
//按学号递增排序
bool cmp1(struct stu stu1, struct stu stu2){
return stu1.no < stu2.no;
}
//按姓名的非递减字典序排序
bool cmp2(struct stu stu1, struct stu stu2){
if(strcmp(stu1.name, stu2.name) == 0){
return stu1.no < stu2.no;
}
return strcmp(stu1.name, stu2.name) < 0;
}
//按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
bool cmp3(struct stu stu1, struct stu stu2){
if(stu1.score == stu2.score || strcmp(stu1.name, stu2.name) == 0){
return stu1.no < stu2.no;
}else{
return stu1.score < stu2.score;
}
}