运用c++求代码,有5个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。要求用结构体变量和结构体变量的指针作函数参数。
时间: 2023-12-01 16:22:33 浏览: 66
好的,下面是一个实现上述功能的C++程序:
```c++
#include <iostream>
#include <string>
using namespace std;
const int NUM = 5; // 学生数
struct Student {
int id;
string name;
float score[3]; // 3门课程的成绩
float avg; // 平均成绩
};
// 计算学生的平均成绩
void calcAvg(Student* stu) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += stu->score[i];
}
stu->avg = sum / 3;
}
// 查找平均成绩最高的学生
Student* findMaxAvg(Student stu[]) {
Student* maxStu = &stu[0];
for (int i = 1; i < NUM; i++) {
calcAvg(&stu[i]); // 先计算平均成绩
if (stu[i].avg > maxStu->avg) {
maxStu = &stu[i];
}
}
return maxStu;
}
int main() {
Student stu[NUM]; // 学生数组
for (int i = 0; i < NUM; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:\n";
cout << "学号:";
cin >> stu[i].id;
cout << "姓名:";
cin >> stu[i].name;
for (int j = 0; j < 3; j++) {
cout << "第" << j + 1 << "门课程成绩:";
cin >> stu[i].score[j];
}
}
Student* maxStu = findMaxAvg(stu); // 查找平均成绩最高的学生
cout << "平均成绩最高的学生信息如下:" << endl;
cout << "学号:" << maxStu->id << endl;
cout << "姓名:" << maxStu->name << endl;
cout << "成绩:";
for (int i = 0; i < 3; i++) {
cout << maxStu->score[i] << " ";
}
cout << endl;
cout << "平均成绩:" << maxStu->avg << endl;
return 0;
}
```
上述程序中,我们定义了一个 `Student` 结构体,包含学生的学号、姓名、3门课程的成绩以及平均成绩。我们首先通过输入,得到了5个学生的信息,保存在结构体数组 `stu` 中。然后通过调用 `findMaxAvg` 函数查找平均成绩最高的学生,并将其指针返回。在 `findMaxAvg` 函数中,我们使用了 `calcAvg` 函数计算了每个学生的平均成绩,然后按照平均成绩从高到低的顺序查找最高成绩的学生。最后,输出平均成绩最高的学生的信息。
希望这个程序可以帮助您实现您的需求。
阅读全文