用C++实现,一个班上有5名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求按照平均成绩从高到低打印所有学生记录。要求有相应的注释
时间: 2024-10-07 12:06:58 浏览: 66
在C++中,你可以创建一个结构体来表示学生的信息,然后定义一个动态数组或者vector来存储所有学生。这里是一个简单的示例,展示了如何实现这个功能:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 使用sort需要这个头文件
// 定义学生信息结构体
struct Student {
int id; // 学号
std::string name; // 姓名
double score[3]; // 三门课程的成绩
double avg_score; // 平均成绩
};
int main() {
const int num_students = 5;
std::vector<Student> students(num_students); // 创建学生数组
for (int i = 0; i < num_students; ++i) {
std::cout << "请输入第" << (i + 1) << "名学生的学号、姓名以及三门课程的成绩:" << std::endl;
std::cin >> students[i].id >> students[i].name;
// 输入每门课程成绩
for (int j = 0; j < 3; ++j) {
std::cin >> students[i].score[j];
}
// 计算平均成绩
students[i].avg_score = static_cast<double>(std::accumulate(students[i].score, students[i].score + 3, 0)) / 3.0;
}
// 按照平均成绩排序
std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.avg_score > b.avg_score; });
// 打印学生信息
for (const auto& student : students) {
std::cout << "学生学号:" << student.id << ", 姓名:" << student.name << ", 平均成绩:" << student.avg_score << std::endl;
}
return 0;
}
阅读全文