一个班的学生的数据包含学号、姓名和4门课程的成绩。输入数据,计算学生的 绩,输出所有学生的学号、姓名、各门课程的成绩和平均成绩,输出平均成绩最高的 据。要求使用结构体实现。
时间: 2024-04-26 09:27:11 浏览: 128
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
好的,我会尽力回答你的问题。以下是一个使用结构体实现的C++程序,可以输入学生数据,并计算每个学生的平均成绩,输出所有学生的学号、姓名、各门课程的成绩和平均成绩,最后输出平均成绩最高的学生的信息:
```c++
#include <iostream>
using namespace std;
const int N = 50; // 最大学生数
// 定义学生结构体
struct Student {
int id; // 学号
string name; // 姓名
float score[4]; // 四门课程成绩
float avg_score; // 平均成绩
};
// 计算每个学生的平均成绩
void calc_avg_score(Student &stu) {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += stu.score[i];
}
stu.avg_score = sum / 4;
}
int main() {
Student stu[N]; // 学生数组
int n; // 学生数
// 输入学生数据
cout << "请输入学生数(不超过" << N << "个):";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个学生的学号、姓名和四门课程成绩(用空格隔开):";
cin >> stu[i].id >> stu[i].name;
for (int j = 0; j < 4; j++) {
cin >> stu[i].score[j];
}
calc_avg_score(stu[i]); // 计算平均成绩
}
// 输出所有学生的信息
cout << "所有学生的信息如下:" << endl;
for (int i = 0; i < n; i++) {
cout << "学号:" << stu[i].id << ",姓名:" << stu[i].name << ",成绩:";
for (int j = 0; j < 4; j++) {
cout << stu[i].score[j] << " ";
}
cout << ",平均成绩:" << stu[i].avg_score << endl;
}
// 输出平均成绩最高的学生信息
int max_idx = 0;
for (int i = 1; i < n; i++) {
if (stu[i].avg_score > stu[max_idx].avg_score) {
max_idx = i;
}
}
cout << "平均成绩最高的学生信息如下:" << endl;
cout << "学号:" << stu[max_idx].id << ",姓名:" << stu[max_idx].name << ",成绩:";
for (int j = 0; j < 4; j++) {
cout << stu[max_idx].score[j] << " ";
}
cout << ",平均成绩:" << stu[max_idx].avg_score << endl;
return 0;
}
```
希望这个程序能够帮助你解决问题!
阅读全文