C++ 编程实现学生成绩排名系统 - 轻松处理班级成绩统计
C++ 学生成绩排名系统
老师让淘淘统计班级同学的成绩和排名,他想这事老师经常要做,不如编写一个程序来完成这个任务。老师的要求如下:
输入
- 第一行输入一个自然数 N(N<=50),表示有 N 位同学;
- 第 2 到 N+1 行每行输入每个同学的语文、数学、英语成绩(整数)。
输出
- 输出 N 行,每行包含一个同学的三门成绩及总分,排名(每项之间用一个空格分隔)。
样例组
样例 1:输入
4
90 98 95
90 95 98
88 99 90
89 99 96
样例 1:输出
90 98 95 283 2
90 95 98 283 2
88 99 90 277 4
89 99 96 284 1
要求:
- 时间限制:1.0Sec
- 内存限制:128MB
C++ 代码
#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/p5n4 著作权归作者所有。请勿转载和采集!