C++动态数组排序学生信息:按总分降序排列
C++ 动态数组排序学生信息:按总分降序排列
本程序使用 C++ 动态数组存储学生信息,并根据三门课程的总分对学生进行降序排序,最终输出排序后的学生信息。
输入形式: 学生人数 n 及每位学生信息已存放在文件 'stu.txt' 中,通过读取文件得到数据。
输出形式: 按照三门课程总分降序排序后的学生信息内容:,每行输出一位学生的信息,包括姓名和三门课程成绩,用空格隔开。
样例输入:
5
张三 80 90 70
李四 90 80 70
王五 70 80 90
赵六 60 70 80
田七 80 70 60
样例输出:
李四 90 80 70
张三 80 90 70
王五 70 80 90
田七 80 70 60
赵六 60 70 80
样例说明: 样例中有 5 个学生,每个学生的信息包括姓名和三门课程成绩,存放在文件 'stu.txt' 中。程序将读取文件中的数据,并按照三门课程总分降序排序后输出学生信息。
代码实现:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int score1;
int score2;
int score3;
};
bool compareStudent(const Student& s1, const Student& s2) {
return s1.score1 + s1.score2 + s1.score3 > s2.score1 + s2.score2 + s2.score3;
}
int main() {
ifstream fin('stu.txt');
int n;
fin >> n;
vector<Student> students(n);
for (int i = 0; i < n; i++) {
fin >> students[i].name >> students[i].score1 >> students[i].score2 >> students[i].score3;
}
fin.close();
sort(students.begin(), students.end(), compareStudent);
for (int i = 0; i < n; i++) {
cout << students[i].name << ' ' << students[i].score1 << ' ' << students[i].score2 << ' ' << students[i].score3 << endl;
}
return 0;
}
代码说明:
- 使用
ifstream类读取文件 'stu.txt' 中的数据,包括学生人数 n 和每个学生的姓名和成绩。 - 使用
vector类存储学生信息,并使用struct Student结构体定义每个学生的信息,包括姓名和三门课程成绩。 - 定义比较函数
compareStudent,用于按照总分进行降序比较。 - 使用
sort函数对学生信息进行排序,并传入比较函数compareStudent。 - 使用循环遍历排序后的学生信息,并输出每个学生的姓名和成绩。
注意:
- 该程序假设 'stu.txt' 文件存在于程序所在目录下,并且文件内容格式正确。
- 该程序使用 C++11 标准,需要使用支持 C++11 的编译器进行编译。
本程序示例了使用动态数组和排序算法对学生信息进行排序,可以帮助理解数据结构和算法的概念。
原文地址: https://www.cveoy.top/t/topic/oKTt 著作权归作者所有。请勿转载和采集!