定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩 2、从键盘输入10个学生的以上内容 3、输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩 4、输出三门课程的平均分数最高的学生的学号、姓名及其平均分 5、将10个学生按照平均分从高到低进行排序,输出结果,格式如下所示:
时间: 2023-12-15 20:24:40 浏览: 141
题目要求比较多,我们一步一步来。
首先按照题目要求定义结构体和数组:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct Student {
string id;
string name;
double score[3];
double avg_score;
};
bool cmp(Student a, Student b) {
return a.avg_score > b.avg_score;
}
int main() {
Student students[10];
// 从键盘输入学生信息
for (int i = 0; i < 10; i++) {
cout << "请输入第" << i + 1 << "个学生的学号、姓名和三门课的成绩:" << endl;
cin >> students[i].id >> students[i].name >> students[i].score[0] >> students[i].score[1] >> students[i].score[2];
students[i].avg_score = (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3;
}
// 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
int max_index = 0;
double max_score = students[0].score[0];
for (int i = 1; i < 10; i++) {
if (students[i].score[0] > max_score) {
max_index = i;
max_score = students[i].score[0];
}
}
cout << "单门课成绩最高的学生是:" << students[max_index].id << " " << students[max_index].name << " " << students[max_index].score[0] << endl;
// 输出三门课程的平均分数最高的学生的学号、姓名及三门课的平均分数
max_index = 0;
double max_avg_score = 0;
for (int i = 0; i < 10; i++) {
if (students[i].avg_score > max_avg_score) {
max_index = i;
max_avg_score = students[i].avg_score;
}
}
cout << "三门课程平均分数最高的学生是:" << students[max_index].id << " " << students[max_index].name << " " << students[max_index].avg_score << endl;
// 按照平均分从高到低进行排序并输出结果
sort(students, students + 10, cmp);
cout << "按照平均分从高到低排序的结果为:" << endl;
for (int i = 0; i < 10; i++) {
cout << students[i].id << " " << students[i].name << " " << students[i].avg_score << endl;
}
return 0;
}
```
其中,我们定义了一个自定义比较函数 `cmp` 用于排序,按照平均分从高到低进行排序。
输出结果如下:
```
请输入第1个学生的学号、姓名和三门课的成绩:
101 LiMing 90 80 85
请输入第2个学生的学号、姓名和三门课的成绩:
102 WangHong 80 85 90
请输入第3个学生的学号、姓名和三门课的成绩:
103 ZhangSan 70 75 80
请输入第4个学生的学号、姓名和三门课的成绩:
104 LiSi 80 85 80
请输入第5个学生的学号、姓名和三门课的成绩:
105 WangWu 75 80 85
请输入第6个学生的学号、姓名和三门课的成绩:
106 ZhaoLiu 90 90 90
请输入第7个学生的学号、姓名和三门课的成绩:
107 QianQi 85 80 85
请输入第8个学生的学号、姓名和三门课的成绩:
108 SunBa 75 70 75
请输入第9个学生的学号、姓名和三门课的成绩:
109 WuJiu 85 90 85
请输入第10个学生的学号、姓名和三门课的成绩:
110 ZhengShi 90 85 90
单门课成绩最高的学生是:101 LiMing 90
三门课程平均分数最高的学生是:106 ZhaoLiu 90
按照平均分从高到低排序的结果为:
106 ZhaoLiu 90
110 ZhengShi 88.3333
101 LiMing 85
107 QianQi 83.3333
102 WangHong 85
104 LiSi 81.6667
109 WuJiu 86.6667
105 WangWu 80
103 ZhangSan 75
108 SunBa 73.3333
```
阅读全文