在c++中有5个学生,每个学生的资料包括学号、姓名、3门课成绩,用赋初值方法输入5个学生的数据到结构体数组中,按平均成绩由高到低排序,输出每个学生的成绩,输出格式与上题相同。
时间: 2024-12-28 22:40:57 浏览: 1
在C++中,你可以使用结构体(struct)来表示学生的信息,包含学号(ID)、姓名(name)和三门课程的成绩。首先,定义一个结构体:
```cpp
struct Student {
int id;
string name;
double score[3];
};
```
接着,创建一个结构体数组存储5个学生的数据,并使用循环从用户那里获取初始值:
```cpp
#include <iostream>
#include <string>
#include <algorithm> // 使用这个头文件来实现排序
int main() {
const int numStudents = 5;
Student students[numStudents];
for (int i = 0; i < numStudents; ++i) {
std::cout << "请输入第" << i+1 << "个学生的学号:";
std::cin >> students[i].id;
std::cout << "请输入第" << i+1 << "个学生的姓名:";
std::cin >> students[i].name;
// 赋初值或读取成绩
for (int j = 0; j < 3; ++j) {
std::cout << "请输入第" << j+1 << "门课程的成绩:";
std::cin >> students[i].score[j];
}
}
// 按平均成绩排序
sort(students, students + numStudents, [](const Student& a, const Student& b) {
return (a.score[0] + a.score[1] + a.score[2]) / 3.0 > (b.score[0] + b.score[1] + b.score[2]) / 3.0;
});
// 输出排序后的学生信息
for (int i = 0; i < numStudents; ++i) {
std::cout << "学号:" << students[i].id << ", 姓名:" << students[i].name << ", 平均成绩:"
<< (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3.0 << std::endl;
}
return 0;
}
```
阅读全文