OOP 学生成绩排序(结构)

题目描述

有N个学生的数据,将学生数据按成绩由低到高排序,如果成绩相同则按姓名首字母序排序,如果首字母也相同则按照年龄排序,并输出N个学生排序后的信息。

输入

测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整型数)、成绩(小于等于100的正数)。

输出

将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
然后输出学生信息,按照如下格式:
姓名 年龄 成绩

输入样例1

3
abc 20 99
bcd 19 97
bed 20 97

输出样例1

bcd 19 97
bed 20 97
abc 20 99

思路分析

对于这种排序条件这么多的,用sort函数排就可以了,很简单。

注意到sort函数自定义的排序规则。

AC代码

#include<iostream>
#include<algorithm>
using namespace std;
struct student
{
	int old,score;
	string name;
};
bool leibniz(student a,student b)
{
	if(a.score!=b.score)
	return a.score<b.score;
	if(a.name[0]!=b.name[0])
	return a.name[0]<b.name[0];
	return a.old<b.old;
}
int main()
{
	int t,i;
	cin>>t;
	student a[t];
	for(i=0;i<t;i++)
	cin>>a[i].name>>a[i].old>>a[i].score;
	sort(a,a+t,leibniz);
	for(i=0;i<t;i++)
	cout<<a[i].name<<' '<<a[i].old<<' '<<a[i].score<<endl;
}

猜你喜欢

转载自blog.csdn.net/weixin_62264287/article/details/123664448
OOP