c++编写一个函数Print,能够打印多个学生的各门成绩,在主函数中定义一个可以存放有5个学生数据的数组。每个学生的数据包括num(学号),name(姓名),score[3](3门课的成绩)。在主函数输入这些数据,用Print函数输出这些数据。(结构体类型编写) ,再编写一个函数SortStud对5个学生按每个学生的3门成绩总分(由高到低)进行排序,并用new申请存放5个学生数据的存储空间。
时间: 2024-04-06 22:33:18 浏览: 70
运用结构体数组与输入函数进行存放学生的学号姓名等数据
4星 · 用户满意度95%
好的,以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Student {
int num; // 学号
string name; // 姓名
int score[3]; // 3门课的成绩
int totalScore; // 总成绩
};
void Print(Student *stuArr, int size) {
for (int i = 0; i < size; i++) {
cout << "学生" << i+1 << "信息:" << endl;
cout << "学号:" << stuArr[i].num << endl;
cout << "姓名:" << stuArr[i].name << endl;
cout << "成绩:" << stuArr[i].score[0] << " " << stuArr[i].score[1] << " " << stuArr[i].score[2] << endl;
}
}
void SortStud(Student *stuArr, int size) {
// 计算每个学生的总成绩
for (int i = 0; i < size; i++) {
int totalScore = 0;
for (int j = 0; j < 3; j++) {
totalScore += stuArr[i].score[j];
}
stuArr[i].totalScore = totalScore;
}
// 冒泡排序
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (stuArr[j].totalScore < stuArr[j+1].totalScore) {
// 交换两个学生的数据
Student temp = stuArr[j];
stuArr[j] = stuArr[j+1];
stuArr[j+1] = temp;
}
}
}
}
int main() {
// 定义存放5个学生数据的数组
Student *stuArr = new Student[5];
// 输入学生数据
for (int i = 0; i < 5; i++) {
cout << "请输入学生" << i+1 << "的信息:" << endl;
cout << "学号:";
cin >> stuArr[i].num;
cout << "姓名:";
cin >> stuArr[i].name;
cout << "成绩:";
cin >> stuArr[i].score[0] >> stuArr[i].score[1] >> stuArr[i].score[2];
}
// 输出学生数据
Print(stuArr, 5);
// 按总成绩排序
SortStud(stuArr, 5);
// 输出排序结果
cout << "按总成绩排序后的结果:" << endl;
Print(stuArr, 5);
// 释放内存
delete[] stuArr;
return 0;
}
```
代码中使用了结构体 `Student` 来存放每个学生的数据,并定义了两个函数 `Print` 和 `SortStud` 分别用于输出学生数据和按总成绩排序。在主函数中,先定义一个可以存放有5个学生数据的数组 `stuArr`,然后输入学生数据,用 `Print` 函数输出这些数据,再用 `SortStud` 函数按总成绩排序,最后再用 `Print` 函数输出排序结果。最后记得释放内存。
阅读全文