按課程總成績從高到低排序輸出各個學生的信息
題目內容:
設計一個結構體類型,包含姓名、學號、語文成績、數學成績、英語成績。輸入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(●’◡’●)