题目描述:老师让淘淘统计班级同学的成绩和排名他想这事老师经常要做不如编写一个程序来完成这个任务。老师的要求如下:输入NN=50个同学的语、数、英三科成绩计算他们的总分并统计出每个同学的名次分数相同名次也相同最后以表格的形式输出。输入:第一行输入一个自然数N表示有N位同学;第2到N+1行每行输入每个同学的语文、数学、英语成绩整数。输出:输出N行每行包含一个同学的三门成绩及总分排名每项之间用一个空格分
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
int score1;
int score2;
int score3;
int totalScore;
int rank;
};
bool compare(const Student& s1, const Student& s2) {
if (s1.totalScore == s2.totalScore) {
return s1.score1 > s2.score1;
}
return s1.totalScore > s2.totalScore;
}
int main() {
int N;
cin >> N;
vector<Student> students(N);
for (int i = 0; i < N; i++) {
cin >> students[i].score1 >> students[i].score2 >> students[i].score3;
students[i].totalScore = students[i].score1 + students[i].score2 + students[i].score3;
students[i].rank = 1;
}
sort(students.begin(), students.end(), compare);
for (int i = 0; i < N; i++) {
if (i > 0 && students[i].totalScore == students[i-1].totalScore) {
students[i].rank = students[i-1].rank;
} else {
students[i].rank = i + 1;
}
cout << students[i].score1 << " " << students[i].score2 << " " << students[i].score3 << " " << students[i].totalScore << " " << students[i].rank << endl;
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/inql 著作权归作者所有。请勿转载和采集!