用c++解决有学生的结构体(学号,姓名,5门成绩)。该班有4个学生,输入4个人的信息。用函数完成如下功能: 函数:input(n)完成学生信息输入函数:output(n)完成学生信息输出 函数:sort(n)完成
时间: 2024-09-18 18:18:35 浏览: 75
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
在C++中,你可以通过定义一个结构体`Student`来表示一个学生,包含学号、姓名和五门成绩。然后创建一个动态数组或者vector来存储这四个学生。接下来我会给出如何定义结构体、创建数组以及实现三个功能的简单示例:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// 定义学生结构体
struct Student {
int id;
std::string name;
float scores[5]; // 五门成绩数组
};
// 输入学生信息的函数
void input(int n, Student students[]) {
for (int i = 0; i < n; ++i) {
std::cout << "请输入第" << (i + 1) << "位学生的学号: ";
std::cin >> students[i].id;
std::cout << "请输入第" << (i + 1) << "位学生的姓名: ";
std::cin >> students[i].name;
for (int j = 0; j < 5; ++j) {
std::cout << "请输入第" << (i + 1) << "位学生的第" << (j + 1) << "门成绩: ";
std::cin >> students[i].scores[j];
}
}
}
// 输出学生信息的函数
void output(int n, const Student students[]) {
for (int i = 0; i < n; ++i) {
std::cout << "学生 " << students[i].id << ": " << students[i].name << "\n";
for (int j = 0; j < 5; ++j) {
std::cout << "成绩第" << (j + 1) << ": " << students[i].scores[j] << "\n";
}
std::cout << "----------\n";
}
}
// 排序学生的函数 (这里假设按总分排序)
void sort(float totalScores[], int n) {
std::vector<Student> vecStudents(students, students + n);
std::sort(vecStudents.begin(), vecStudents.end(),
[](const Student& a, const Student& b) { return a.totalScore() > b.totalScore(); });
// 将排序后的数据放回原数组
for (int i = 0; i < n; ++i) {
students[i] = vecStudents[i];
}
}
// 计算总分的辅助函数
float totalScore(const Student& student) {
float sum = 0;
for (auto score : student.scores) {
sum += score;
}
return sum;
}
int main() {
int numStudents = 4;
Student students[numStudents];
// 调用输入函数
input(numStudents, students);
// 调用输出函数
std::cout << "学生信息:\n";
output(numStudents, students);
// 按照总分排序
float* totalScores = new float[numStudents];
for (int i = 0; i < numStudents; ++i) {
totalScores[i] = totalScore(students[i]);
}
sort(totalScores, numStudents);
std::cout << "按照总分排序后的学生信息:\n";
output(numStudents, students);
// 清理内存
delete[] totalScores;
return 0;
}
```
阅读全文