用c++1)一个班上有5名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求按照平均成绩从高到低打印所有学生记录。
时间: 2024-10-07 15:06:51 浏览: 33
数据结构:定义一个包含学生信息(学号、姓名、成绩)的顺序表_数据结构
5星 · 资源好评率100%
在C++中,你可以使用结构体定义学生的记录,然后创建一个动态数组或vector来存储学生信息,并通过比较平均成绩来进行排序。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort函数
// 定义学生记录结构体
struct Student {
int id;
std::string name;
double score[3]; // 三门课程的成绩
double average; // 平均成绩计算字段
// 构造函数初始化平均成绩
Student(int id, const std::string& name) : id(id), name(name) {
for (int i = 0; i < 3; ++i)
if (score[i] != 0) // 防止除以零
average = (average * (i - 1) + score[i]) / i;
}
};
bool compareAverage(const Student& a, const Student& b) { // 比较平均分降序
return a.average > b.average;
}
int main() {
int numStudents = 5;
std::vector<Student> students(numStudents);
for (size_t i = 0; i < numStudents; ++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];
if (students[i].score[j])
students[i].average = (students[i].average * (j - 1) + students[i].score[j]) / j;
}
}
// 使用sort函数,根据compareAverage比较函数对学生进行降序排列
std::sort(students.begin(), students.end(), compareAverage);
// 打印排序后的学生记录
for (const auto& student : students) {
std::cout << "学号:" << student.id << ", 姓名:" << student.name << ", 平均成绩:" << student.average << std::endl;
}
return 0;
}
```
阅读全文