目录
题目
题目链接:
测试样例
输入样例1
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
输出样例1
000001 Zoe 60
000007 James 85
000010 Amy 90
输入样例2
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
输出样例2
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
输入样例3
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 9
输出样例3
000002 James 9
000001 Zoe 60
000007 James 85
000010 Amy 90
提交结果截图
带详细注释的源代码
#include <cstdio>
#include "string.h"
#include <iostream>
#include <algorithm>
using namespace std;
int n, c;
struct Stu //用结构体存储每个学生的信息
{
int id;//6位
char name[10];
int score;
}stu[100005]; //定的数组大小要大于10^5
bool cmp(Stu a, Stu b)
{
if(c == 1) //比较id大小
return (a.id < b.id);
else if(c == 2) //比较名字,名字相同则比较id
return (strcmp(a.name, b.name)<0 || (strcmp(a.name, b.name)==0 && a.id < b.id));
else //比较分数,分数相同则比较id
return (a.score < b.score || (a.score == b.score && a.id < b.id));
}
int main()
{
scanf("%d %d", &n, &c);
for(int i = 0; i < n; i++)
scanf("%d %s %d", &stu[i].id, stu[i].name, &stu[i].score);
sort(stu, stu+n, cmp);//对学生信息进行排序
for(int i = 0; i < n; i++)//打印学习,注意id是6位,要补0
printf("%06d %s %d\n", stu[i].id, stu[i].name, stu[i].score);
return 0;
}