题目描述:
STL库中有许多非常实用的函数,如sort,set,map,vector,queue等。 此题为sort的应用教学,题目如下: 读入n条学生成绩记录,包括学生姓名,总成绩,语文,数学和英语成绩,要求按总成绩从高到低输出n条记录,每条记录占一行。总成绩相同时按语文成绩从高到低输出,语文成绩相同时按数学成绩从高到低输出。(没有两个人的成绩完全一样)
输入:
第一行读入一个 n ( 0<n<=100) 接下来n行每行读入学生姓名,总成绩,语文,数学和英语成绩,中间以空格隔开
输出:
STL库中有许多非常实用的函数,如sort,set,map,vector,queue等。 此题为sort的应用教学,题目如下: 读入n条学生成绩记录,包括学生姓名,总成绩,语文,数学和英语成绩,要求按总成绩从高到低输出n条记录,每条记录占一行。总成绩相同时按语文成绩从高到低输出,语文成绩相同时按数学成绩从高到低输出。(没有两个人的成绩完全一样)
输入:
第一行读入一个 n ( 0<n<=100) 接下来n行每行读入学生姓名,总成绩,语文,数学和英语成绩,中间以空格隔开
输出:
n行按要求排序好的记录。
样例输入:
3
Lsx 270 90 90 90
Ywz 275 92 93 90
Wjx 255 85 85 85
样例输出:
Ywz 275 92 93 90
Lsx 270 90 90 90
Wjx 255 85 85 85
代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct Node{
string name;
int sum;
int chi;
int math;
int eng;
}p[100];
bool cmp(Node a,Node b)
{
if(a.sum!=b.sum) return a.sum>b.sum;
else if(a.chi!=b.chi) return a.chi>b.chi;
else if(a.math!=b.math) return a.math>b.math;
else return a.eng>b.eng;
}
int main()
{
int n;
cin>>n;
if(n>0&&n<=100)
{
for(int j=0;j<n;j++)
{
cin>>p[j].name>>p[j].sum>>p[j].chi>>p[j].math>>p[j].eng;
}
sort(p,p+n,cmp);
for(int j=0;j<n;j++)
cout<<p[j].name<<" "<<p[j].sum<<" "<<p[j].chi<<" "<<p[j].math<<" "<<p[j].eng<<endl;
}
return 0;
}