用C++编写一个函数Print,能够打印多个学生的各门成绩,在主函数中定义一个可以存放有5个学生数据的数组。每个学生的数据包括num(学号),name(姓名),score[3](3门课的成绩)。在主函数输入这些数据,用Print函数输出这些数据。在此基础上再编写一个函数SortStud对5个学生按每个学生的3门成绩总分(由高到低)进行排序,并用new申请存放5个学生数据的存储空间。
时间: 2024-04-06 19:32:16 浏览: 52
2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用p
好的,下面是C++的代码实现:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct Student{
int num;
string name;
float score[3];
float sum;
};
void Print(Student stu[], int n){
for(int i=0; i<n; i++){
cout<<"学号:"<<stu[i].num<<" 姓名:"<<stu[i].name<<" 成绩:";
for(int j=0; j<3; j++){
cout<<stu[i].score[j]<<" ";
}
cout<<" 总分:"<<stu[i].sum<<endl;
}
}
bool cmp(Student a, Student b){
return a.sum > b.sum;
}
void SortStud(Student stu[], int n){
for(int i=0; i<n; i++){
stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
}
sort(stu, stu+n, cmp);
}
int main(){
Student *stu = new Student[5];
for(int i=0; i<5; i++){
cout<<"请输入第"<<i+1<<"个学生的信息:"<<endl;
cout<<"学号:";
cin>>stu[i].num;
cout<<"姓名:";
cin>>stu[i].name;
cout<<"3门课成绩:";
for(int j=0; j<3; j++){
cin>>stu[i].score[j];
}
}
SortStud(stu, 5);
cout<<"排序后的学生信息:"<<endl;
Print(stu, 5);
delete[] stu;
return 0;
}
```
在这个程序中,我们首先定义了一个结构体 `Student`,包含学生的学号 `num`、姓名 `name` 和三门课的成绩 `score[3]`,以及这个学生的总分 `sum`。然后定义了一个函数 `Print`,用于打印学生信息,其中参数 `stu[]` 表示一个存放学生信息的数组,参数 `n` 表示数组中有多少个学生信息需要打印。还定义了一个函数 `SortStud`,用于对学生信息按照总分进行排序,其中参数 `stu[]` 表示一个存放学生信息的数组,参数 `n` 表示数组中有多少个学生信息需要排序。
在 `main` 函数中,我们首先使用 `new` 关键字,动态申请了一个 `Student` 类型的数组 `stu`,用于存放5个学生的信息。然后通过循环依次输入每个学生的信息,调用 `SortStud` 函数对学生信息按照总分进行排序,最后调用 `Print` 函数输出学生信息。
程序输出结果类似于:
```
请输入第1个学生的信息:
学号:1001
姓名:张三
3门课成绩:90 80 85
请输入第2个学生的信息:
学号:1002
姓名:李四
3门课成绩:78 89 92
请输入第3个学生的信息:
学号:1003
姓名:王五
3门课成绩:85 90 88
请输入第4个学生的信息:
学号:1004
姓名:赵六
3门课成绩:92 87 89
请输入第5个学生的信息:
学号:1005
姓名:钱七
3门课成绩:79 86 91
排序后的学生信息:
学号:1004 姓名:赵六 成绩:92 87 89 总分:268
学号:1001 姓名:张三 成绩:90 80 85 总分:255
学号:1003 姓名:王五 成绩:85 90 88 总分:263
学号:1005 姓名:钱七 成绩:79 86 91 总分:256
学号:1002 姓名:李四 成绩:78 89 92 总分:259
```
阅读全文