有这样一种学生结构体类型,其数据成员有包括学号,姓名和3门课程的成绩。实现下列功能: 从键盘输入5个学生的信息,将这些同学的信息采用结构体数组的方式存储起来。 输出每门课程最高分的学生信息。 输出每门课程的平均分。 按照总分从高到低对学生进行排序,并输出排序后的学生信息
时间: 2024-05-01 12:20:04 浏览: 86
运用结构体数组与输入函数进行存放学生的学号姓名等数据
4星 · 用户满意度95%
下面是实现上述功能的代码:
```c++
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
// 学生结构体
struct Student {
string id; // 学号
string name; // 姓名
double score[3]; // 3门课程成绩
double total; // 总分
};
int main() {
const int n = 5; // 学生人数
Student students[n]; // 学生数组
// 输入学生信息
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
for (int j = 0; j < 3; j++) {
cout << "第" << j + 1 << "门课成绩:";
cin >> students[i].score[j];
students[i].total += students[i].score[j];
}
cout << endl;
}
// 输出每门课程最高分的学生信息
for (int j = 0; j < 3; j++) {
int max_index = 0;
for (int i = 1; i < n; i++) {
if (students[i].score[j] > students[max_index].score[j]) {
max_index = i;
}
}
cout << "第" << j + 1 << "门课程最高分的学生信息:" << endl;
cout << "学号:" << students[max_index].id << endl;
cout << "姓名:" << students[max_index].name << endl;
cout << "成绩:" << students[max_index].score[j] << endl;
cout << endl;
}
// 输出每门课程的平均分
for (int j = 0; j < 3; j++) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += students[i].score[j];
}
double average = sum / n;
cout << "第" << j + 1 << "门课程的平均分:" << average << endl;
}
cout << endl;
// 按照总分从高到低对学生进行排序,并输出排序后的学生信息
sort(students, students + n, [](const Student& a, const Student& b){
return a.total > b.total;
});
cout << "按照总分从高到低排序后的学生信息:" << endl;
for (int i = 0; i < n; i++) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "总分:" << students[i].total << endl;
cout << endl;
}
return 0;
}
```
阅读全文