请定义一个class 学生
数据成员包括:姓名、语文和数学两科成绩及它们的总分、均分;
函数成员包括
·构造函数、析构函数和复制构造函数
函数zfjf()计算某学生的总分和均分
函数 void ortave,按均分从小到大将数组元素排序;(另:定义函数 void ortname,按姓名从小到大将数组元素排序)
在主函数中定义学生类型的数组a[5],并为各自的数据成员:姓名、语文、数学赋值(初始化);完成测试。
```c++
#include <iostream>
#include <cstring>
using namespace std;
class student{
private:
char Name[20];
float chinese,math,sum,ave;
public:
student(){
cout<<"构造函数"<<endl;
};
student(student &a){
strcpy(Name,a.Name);
chinese=a.chinese;
math=a.math;
sum=a.sum;
ave=a.ave;
cout<<"复制构造函数"<<endl;
}
~student(){cout<<"析构函数"<<endl;
}
void print(){
cout<<"姓名:"<<Name<<" "<<"语文:"<<chinese<<" "<<"数学:"<<math<<" "<<"总分:"<<sum<<" "<<"均分:"<<ave<<endl;
}
void zfjf();
friend void sortave(student b[],int n);
friend void sortname(student b[],int n);
};
void student::zfjf(){
sum=chinese+math;
ave=sum/2;
}
void sortave(student b[],int n){
student t;
int i,j;
for(i=0;i<5-1;i++)
for(j=0;j<5-i-1;j++)
if(b[j].ave>b[j+1].ave) {t=b[j];b[j]=b[j+1];b[j+1]=t;
}
}
void sortname(student b[],int n){
student t;
int i,j;
for(i=0;i<5-1;i++)
for(j=0;j<5-i-1;j++)
if(strcmp(b[j].Name,b[j+1].Name)>0){t=b[j];b[j]=b[j+1];b[j+1]=t;
}
}
int main(){
student a[5]={student("a",95,95),student("b",98,95),student("c",96,97),student("d",95,98),student("e",96,93)};
int i;
a[0].zfjf(a,5);
for(i=0;i<N;i++) a[i].print();
a[0].sortave(a,5);
for(i=0;i<N;i++) a[i].print();
a[0].sortname(a,5);
for(i=0;i<N;i++) a[i].print();
return 0;
}
```