学生成绩问题。 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩。从 键盘输入10个学生数据, 要求输出每门课的总平均成绩及最高分学生的数据(用结构体数组 实现)。
时间: 2023-12-15 16:45:37 浏览: 88
好的,这是一个经典的结构体数组的应用题目,下面是一个实现该功能的 C++ 代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义学生结构体
struct Student {
string id;
string name;
double score[3];
};
int main() {
const int NUM = 10; // 学生数量
Student students[NUM]; // 学生数组
double sum[3] = {0}; // 每门课的总成绩
int max_score_index[3] = {0}; // 每门课最高分的学生下标
// 输入学生数据
for (int i = 0; i < NUM; i++) {
cout << "请输入第" << i + 1 << "个学生的学号、姓名和3门课的成绩:";
cin >> students[i].id >> students[i].name;
for (int j = 0; j < 3; j++) {
cin >> students[i].score[j];
sum[j] += students[i].score[j]; // 累加每门课的总成绩
if (students[i].score[j] > students[max_score_index[j]].score[j]) {
max_score_index[j] = i; // 更新每门课最高分的学生下标
}
}
}
// 输出每门课的总平均成绩
cout << "每门课的总平均成绩为:";
for (int j = 0; j < 3; j++) {
cout << sum[j] / NUM << " ";
}
cout << endl;
// 输出每门课最高分的学生数据
for (int j = 0; j < 3; j++) {
cout << "第" << j + 1 << "门课最高分的学生是:";
cout << students[max_score_index[j]].id << " ";
cout << students[max_score_index[j]].name << " ";
cout << students[max_score_index[j]].score[j] << endl;
}
return 0;
}
```
以上代码中,首先定义了一个 `Student` 结构体,包含学号、姓名和三门课成绩。然后在 `main` 函数中,定义了一个大小为 10 的 `Student` 数组 `students`,以及三个辅助数组 `sum`、`max_score_index`,分别用于存储每门课的总成绩、每门课最高分的学生下标。
接下来,用一个循环依次输入每个学生的数据,并在输入的同时更新 `sum` 和 `max_score_index` 数组,计算每门课的总成绩和最高分学生的下标。
最后,输出每门课的总平均成绩以及每门课最高分的学生数据。
阅读全文