结构体编写程序:从键盘输入n个学生的6门课程考试成绩,计算每个学生的平均成 绩,并按平均成绩从高到低输出每个学生的信息(包括学号、姓名和6门成绩)。
时间: 2023-12-10 17:39:33 浏览: 89
以下是一个基本的结构体编写程序,可以实现你的要求:
```c++
#include <iostream>
#include <string>
using namespace std;
const int MAX_N = 100;
struct Student {
string id; // 学号
string name; // 姓名
double score[6]; // 6门成绩
double avg; // 平均成绩
};
// 计算每个学生的平均成绩
void calcAvg(Student& stu) {
double sum = 0;
for (int i = 0; i < 6; i++) {
sum += stu.score[i];
}
stu.avg = sum / 6;
}
// 按平均成绩从高到低排序
void sortStudents(Student stu[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (stu[i].avg < stu[j].avg) {
swap(stu[i], stu[j]);
}
}
}
}
// 输出每个学生的信息
void printStudents(const Student stu[], int n) {
for (int i = 0; i < n; i++) {
cout << stu[i].id << " " << stu[i].name << " ";
for (int j = 0; j < 6; j++) {
cout << stu[i].score[j] << " ";
}
cout << stu[i].avg << endl;
}
}
int main() {
int n;
Student stu[MAX_N];
cout << "请输入学生人数:";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> stu[i].id;
cout << "姓名:";
cin >> stu[i].name;
cout << "6门成绩:";
for (int j = 0; j < 6; j++) {
cin >> stu[i].score[j];
}
calcAvg(stu[i]); // 计算平均成绩
}
sortStudents(stu, n); // 按平均成绩从高到低排序
cout << "按平均成绩从高到低输出每个学生的信息:" << endl;
printStudents(stu, n); // 输出每个学生的信息
return 0;
}
```
该程序定义了一个结构体 `Student`,包含学生的学号、姓名、6门成绩和平均成绩。程序中先从键盘输入学生人数和每个学生的信息,然后计算每个学生的平均成绩,最后按平均成绩从高到低排序并输出每个学生的信息。
阅读全文