C语言 按课程总成绩从高到低排序输出各个学生的信息

按课程总成绩从高到低排序输出各个学生的信息

题目内容:
设计一个结构体类型,包含姓名、学号、语文成绩、数学成绩、英语成绩。输入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(●’◡’●)

发布了12 篇原创文章 · 获赞 15 · 访问量 3183

猜你喜欢

转载自blog.csdn.net/a1341398182/article/details/104357776