从键盘上输入n个学生的信息,每个学生的信息包括学号、姓名、3门课的成绩,然后输出:每个学生的信息以及总分最高的学生的信息(注意:学生信息包括学号、姓名、3门课成绩、总分以及平均成绩)。要求采用动态内存分配和函数实现。用c++实现
时间: 2024-01-06 08:06:11 浏览: 71
编制一个程序,要求输入5个学生的学号、2门课的成绩,然后输出每个学生的学号、2门课成绩、平均成绩。
3星 · 编辑精心推荐
好的,我来为您提供一个C++的程序,实现您的需求:
```cpp
#include <iostream>
#include <string>
using namespace std;
struct Student {
string id; // 学号
string name; // 姓名
double score[3]; // 3门课成绩
double total; // 总分
double average; // 平均成绩
};
// 动态分配内存,输入n个学生信息
Student* input(int n) {
Student* students = new Student[n];
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
cout << "3门课成绩:";
for (int j = 0; j < 3; j++) {
cin >> students[i].score[j];
students[i].total += students[i].score[j];
}
students[i].average = students[i].total / 3;
}
return students;
}
// 输出每个学生信息
void output(Student* students, int n) {
for (int i = 0; i < n; i++) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "3门课成绩:";
for (int j = 0; j < 3; j++) {
cout << students[i].score[j] << " ";
}
cout << endl;
cout << "总分:" << students[i].total << endl;
cout << "平均成绩:" << students[i].average << endl;
cout << endl;
}
}
// 找到总分最高的学生
Student findMax(Student* students, int n) {
int maxIndex = 0;
for (int i = 1; i < n; i++) {
if (students[i].total > students[maxIndex].total) {
maxIndex = i;
}
}
return students[maxIndex];
}
int main() {
int n;
cout << "请输入学生人数:";
cin >> n;
Student* students = input(n);
output(students, n);
Student maxStudent = findMax(students, n);
cout << "总分最高的学生信息:" << endl;
cout << "学号:" << maxStudent.id << endl;
cout << "姓名:" << maxStudent.name << endl;
cout << "3门课成绩:";
for (int j = 0; j < 3; j++) {
cout << maxStudent.score[j] << " ";
}
cout << endl;
cout << "总分:" << maxStudent.total << endl;
cout << "平均成绩:" << maxStudent.average << endl;
// 释放动态分配的内存
delete[] students;
return 0;
}
```
程序中,我们定义了一个结构体 `Student`,用于存储每个学生的信息,包括学号、姓名、3门课成绩、总分以及平均成绩。在 `input` 函数中,我们利用动态内存分配,输入n个学生信息,并计算出每个学生的总分和平均成绩。在 `output` 函数中,输出每个学生的信息。在 `findMax` 函数中,我们遍历所有学生,找到总分最高的学生,并返回该学生的信息。在 `main` 函数中,我们先输入n个学生信息,然后输出每个学生的信息,最后找到总分最高的学生,并输出该学生的信息。最后,我们要记得释放动态分配的内存,以避免内存泄漏。
阅读全文