编写程序,用结构体存放学生的若干信息,包括学号、姓名和3门课程的分数,从键盘输入数据,输出每门课程的总平均分,以及最高分的学生的完整数据。
时间: 2024-03-24 18:36:07 浏览: 78
好的,以下是可以实现你的要求的C++代码:
```c++
#include<iostream>
#include<string>
using namespace std;
// 定义学生结构体
struct Student {
string id; // 学号
string name; // 姓名
int score1; // 课程1分数
int score2; // 课程2分数
int score3; // 课程3分数
float avg; // 平均分
};
int main() {
const int num = 5; // 学生数量
Student stu[num]; // 存储学生信息的数组
int total1 = 0, total2 = 0, total3 = 0; // 存储每门课程的总分
int maxScore = 0; // 存储最高分
int maxIndex = 0; // 存储最高分学生的下标
// 输入学生信息
for (int i = 0; i < num; i++) {
cout << "请输入第" << i+1 << "个学生的信息:\n";
cout << "学号:";
cin >> stu[i].id;
cout << "姓名:";
cin >> stu[i].name;
cout << "课程1分数:";
cin >> stu[i].score1;
total1 += stu[i].score1;
cout << "课程2分数:";
cin >> stu[i].score2;
total2 += stu[i].score2;
cout << "课程3分数:";
cin >> stu[i].score3;
total3 += stu[i].score3;
// 计算每个学生的平均分
stu[i].avg = (stu[i].score1 + stu[i].score2 + stu[i].score3) / 3.0;
// 记录最高分和最高分学生的下标
if (stu[i].score1 > maxScore) {
maxScore = stu[i].score1;
maxIndex = i;
}
if (stu[i].score2 > maxScore) {
maxScore = stu[i].score2;
maxIndex = i;
}
if (stu[i].score3 > maxScore) {
maxScore = stu[i].score3;
maxIndex = i;
}
}
// 输出每门课程的平均分
cout << "\n课程1的平均分:" << total1 / (float)num << endl;
cout << "课程2的平均分:" << total2 / (float)num << endl;
cout << "课程3的平均分:" << total3 / (float)num << endl;
// 输出最高分的学生信息
cout << "\n最高分的学生信息:\n";
cout << "学号:" << stu[maxIndex].id << endl;
cout << "姓名:" << stu[maxIndex].name << endl;
cout << "课程1分数:" << stu[maxIndex].score1 << endl;
cout << "课程2分数:" << stu[maxIndex].score2 << endl;
cout << "课程3分数:" << stu[maxIndex].score3 << endl;
cout << "平均分:" << stu[maxIndex].avg << endl;
return 0;
}
```
这个程序中,我们定义了一个结构体 `Student` 用来存储每个学生的信息,包括学号、姓名和三门课程的分数。我们使用一个数组 `stu` 来存储所有学生的信息。在输入学生信息的过程中,我们顺便计算每个学生的平均分,并记录最高分和最高分学生的下标。最后,我们输出每门课程的平均分和最高分学生的信息。
注意,在计算平均分的时候,我们要记得将分数转换为浮点数,否则会出现整数相除的情况,导致结果错误。
阅读全文