#pragma warning(disable:4996);
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct stu {
char num[8];
char name[20];
int grade;
}buf[100005];
bool cmp1(stu a, stu b) {
return strcmp(a.num, b.num) < 0;
}
bool cmp2(stu a, stu b) {
if (strcmp(a.name, b.name)!=0) return strcmp(a.name, b.name) < 0;
else return strcmp(a.num, b.num) < 0;
}
bool cmp3(stu a, stu b) {
if (a.grade != b.grade) return a.grade < b.grade;
else return strcmp(a.num, b.num) < 0;
}//根据c的取值决定排序顺序
int main()
{
int n, count = 0;
while (scanf("%d", &n) != EOF) {
if (n == 0) break;
int c;
scanf("%d", &c);
for (int i = 0;i < n;i++) {
getchar();
scanf("%s %s %d", buf[i].num, buf[i].name, &buf[i].grade);
}
switch (c)
{
case 1:
sort(buf, buf + n, cmp1);
break;
case 2:
sort(buf, buf + n, cmp2);
break;
case 3:
sort(buf, buf + n, cmp3);
break;
}
printf("Case %d:\n", ++count);//注意case几的取值与c无关,而是与测试数有关;
for (int i = 0;i < n;i++) {
printf("%s %s %d\n", buf[i].num, buf[i].name, buf[i].grade);
}
}
return 0;
}
问题 C: EXCEL排序
最新推荐文章于 2021-03-29 16:34:13 发布