解题代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int C;
struct student {
char id[7];
char name[9];
int score;
}s[100000];
typedef struct student stu;
bool cmp(stu a, stu b) {
if (C == 1) return strcmp(a.id, b.id) < 0;
if (C == 2) {
if (strcmp(a.name, b.name)) return strcmp(a.name, b.name) < 0;
return strcmp(a.id, b.id) < 0;
}
if (a.score != b.score) return a.score < b.score;
return strcmp(a.id, b.id) < 0;
}
int main()
{
int num;
scanf("%d %d", &num, &C);
for (int i = 0; i < num; i++)
scanf("%s %s %d", s[i].id, s[i].name, &s[i].score);
sort(s, s + num, cmp);
for (int i = 0; i < num; i++) {
if (i) printf("\n");
printf("%s %s %d", s[i].id, s[i].name, s[i].score);
}
return 0;
}
测试结果
问题整理
1.排序算法。