按课程总成绩从高到低排序输出各个学生的信息
题目内容:
设计一个结构体类型,包含姓名、学号、语文成绩、数学成绩、英语成绩。输入n个学生的信息,输出按三门课程总成绩从高到低排序的各个学生的姓名、学号和各科成绩。
输入格式:
首先第1行输入一个整数n(1<=n<=20),表示学生人数,然后输入n行,每行包含一个学生的信息:姓名(不超过20个字符)、学号(不超过12个字符)以及三门课程成绩,各信息用空格分隔。
输出格式:
从高到低排序的各个学生的姓名、学号和各科成绩,各信息用空格分隔,各学生之间换行。
输入样例:
3
Zhangling 1801 80 85 78
Wangliang 1802 87 83 82
Fangfang 1803 90 89 83
输出样例:
Fangfang 1803 90 89 83
Wangliang 1802 87 83 82
Zhangling 1801 80 85 78
时间限制:500ms内存限制:32000kb
代码实现:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
string id;
double marks1, mark2, mark3;
};
int main(int argc, char* argv[]) {
auto stuList = vector<Student>();
int n;
cin >> n;
for (auto i = 0; i < n; i++) {
string tmpName, tmpId;
double tmpMark1, tmpMark2, tmpMark3;
cin >> tmpName >> tmpId >> tmpMark1 >> tmpMark2 >> tmpMark3;
stuList.push_back({ tmpName, tmpId, tmpMark1, tmpMark2, tmpMark3 });
}
sort(stuList.begin(), stuList.end(), [](const Student& s1, const Student& s2) {
return (s1.marks1 + s1.mark2 + s1.mark3) > (s2.marks1 + s2.mark2 + s2.mark3);
});
for (auto x:stuList) {
cout << x.name << " " << x.id << " " << x.marks1 << " " << x.mark2 << " " << x.mark3 << endl;;
}
return 0;
}
啦啦啦,over(●’◡’●)