C++:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。从键盘输入10个学生的数据,要求输出3门课程的总平均成绩,以及最高分的学生的学号、姓名、3门课程成绩、平均分数。(定义结构体)
时间: 2023-12-15 15:23:02 浏览: 74
C++课程设计结构体'-学生成绩管理系统用结构体.docx
以下是C++代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义结构体
struct Student {
string id; // 学号
string name; // 姓名
double score1; // 第一门课程成绩
double score2; // 第二门课程成绩
double score3; // 第三门课程成绩
};
int main() {
const int NUM = 10; // 学生数量
Student students[NUM]; // 定义存储学生数据的数组
double sum1 = 0, sum2 = 0, sum3 = 0; // 三门课程的总成绩
double max_avg_score = 0; // 最高平均分
string max_id; // 最高平均分的学生学号
string max_name; // 最高平均分的学生姓名
// 从键盘输入学生数据
for (int i = 0; i < NUM; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
cout << "第一门课程成绩:";
cin >> students[i].score1;
cout << "第二门课程成绩:";
cin >> students[i].score2;
cout << "第三门课程成绩:";
cin >> students[i].score3;
cout << endl;
// 计算三门课程的总成绩
sum1 += students[i].score1;
sum2 += students[i].score2;
sum3 += students[i].score3;
// 计算该学生的平均分数
double avg_score = (students[i].score1 + students[i].score2 + students[i].score3) / 3;
// 如果该学生的平均分数比当前最高平均分高,更新最高平均分和对应的学生信息
if (avg_score > max_avg_score) {
max_avg_score = avg_score;
max_id = students[i].id;
max_name = students[i].name;
}
}
// 计算三门课程的总平均成绩
double avg1 = sum1 / NUM;
double avg2 = sum2 / NUM;
double avg3 = sum3 / NUM;
// 输出结果
cout << "三门课程的总平均成绩为:" << endl;
cout << "第一门课程:" << avg1 << endl;
cout << "第二门课程:" << avg2 << endl;
cout << "第三门课程:" << avg3 << endl;
cout << endl;
cout << "最高平均分的学生信息为:" << endl;
cout << "学号:" << max_id << endl;
cout << "姓名:" << max_name << endl;
cout << "第一门课程成绩:" << students[max_id].score1 << endl;
cout << "第二门课程成绩:" << students[max_id].score2 << endl;
cout << "第三门课程成绩:" << students[max_id].score3 << endl;
cout << "平均分数:" << max_avg_score << endl;
return 0;
}
```
注意事项:
1. 在计算三门课程的总成绩时,需要定义三个变量分别记录每门课程的总成绩,并在遍历完所有学生的数据后再计算平均值。
2. 在更新最高平均分和对应的学生信息时,需要记录该学生的学号和姓名,以便后续输出。
阅读全文