有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)。 输入 学生数量N占一行 每个学生的学号、姓名、三科成绩占一行,空格分开。 输出 各门课的平均成绩最高分的学生的数据(包括学号、姓名、3门课成绩) 用C++实现
时间: 2023-12-15 12:14:38 浏览: 106
要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3
好的,以下是C++代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Student {
string id;
string name;
int score[3];
};
int main() {
int n;
cout << "请输入学生数量:";
cin >> n;
Student* students = new Student[n]; // 动态分配n个学生的空间
// 输入每个学生的数据
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个学生的学号、姓名、成绩:";
cin >> students[i].id >> students[i].name >> students[i].score[0] >> students[i].score[1] >> students[i].score[2];
}
// 计算各科平均成绩
double avg[3] = {0}; // 初始化为0
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
avg[j] += students[i].score[j];
}
}
for (int j = 0; j < 3; j++) {
avg[j] /= n;
}
cout << "各科平均成绩为:" << avg[0] << " " << avg[1] << " " << avg[2] << endl;
// 找出最高分的学生
int maxScore = students[0].score[0];
int maxIndex = 0;
for (int i = 1; i < n; i++) {
if (students[i].score[0] > maxScore) {
maxScore = students[i].score[0];
maxIndex = i;
}
}
cout << "最高分的学生的数据为:" << students[maxIndex].id << " " << students[maxIndex].name << " " << students[maxIndex].score[0] << " " << students[maxIndex].score[1] << " " << students[maxIndex].score[2] << endl;
delete[] students; // 释放动态分配的空间
return 0;
}
```
该程序首先输入学生数量,然后动态分配n个学生的空间。接着,输入每个学生的数据,计算各科平均成绩,找出最高分的学生。最后释放动态分配的空间并结束程序。
阅读全文