有10名学生,每名学生的数据包含学号、姓名、3门课程的成绩,从键盘输入10名学生的数据。 要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数) 创建四个函数input, print,aver,excelent接受结构体数组指针。 void input (stu *p)
时间: 2023-12-15 15:16:26 浏览: 70
好的,下面是代码实现:
```c++
#include <iostream>
using namespace std;
struct student {
int id; // 学号
string name; // 姓名
int score1; // 第一门课成绩
int score2; // 第二门课成绩
int score3; // 第三门课成绩
double average; // 平均分
};
void input(student* p) {
for (int i = 0; i < 10; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> p[i].id;
cout << "姓名:";
cin >> p[i].name;
cout << "第一门课程成绩:";
cin >> p[i].score1;
cout << "第二门课程成绩:";
cin >> p[i].score2;
cout << "第三门课程成绩:";
cin >> p[i].score3;
p[i].average = (p[i].score1 + p[i].score2 + p[i].score3) / 3.0; // 计算平均分
}
}
void print(student* p) {
cout << "3门课程的平均成绩为:";
double avg1 = 0, avg2 = 0, avg3 = 0;
for (int i = 0; i < 10; i++) {
avg1 += p[i].score1;
avg2 += p[i].score2;
avg3 += p[i].score3;
}
avg1 /= 10.0;
avg2 /= 10.0;
avg3 /= 10.0;
cout << "第一门课程:" << avg1 << ",第二门课程:" << avg2 << ",第三门课程:" << avg3 << endl;
// 找到最高分的学生
int max_index = 0;
for (int i = 0; i < 10; i++) {
if (p[i].average > p[max_index].average) {
max_index = i;
}
}
// 输出最高分学生的信息
cout << "最高分的学生信息为:" << endl;
cout << "学号:" << p[max_index].id << endl;
cout << "姓名:" << p[max_index].name << endl;
cout << "第一门课程成绩:" << p[max_index].score1 << endl;
cout << "第二门课程成绩:" << p[max_index].score2 << endl;
cout << "第三门课程成绩:" << p[max_index].score3 << endl;
cout << "平均分:" << p[max_index].average << endl;
}
int main() {
student stu[10];
input(stu);
print(stu);
return 0;
}
```
在这个代码中,我们定义了一个 `student` 结构体,包含了学号、姓名、三门课程成绩和平均分。然后定义了 `input` 函数,用于输入学生信息; `print` 函数,用于输出3门课程的平均成绩和最高分的学生信息。最后在 `main` 函数中,调用了 `input` 和 `print` 函数,完成了程序的功能。
阅读全文