65,186
社区成员




#include<iostream>
#include<cstring>
using namespace std;
class student
{
private:
int no;
float m,e;
public:
char *n;//改到这里来
student(char p[]="0",int o=0,float t=0,float g=0)
{ if(p)
{ n=new char[strlen(p)+1];
strcpy(n,p);
}
else
cout<<"无名氏";
no=o;m=t;e=g;
}
float sum()
{ int s;
s=m+e;
return s;
}
float ave()
{ int a;
a=(m+e)/2;
return a;
}
void input(char p[10]="无名氏",int o=0,float t=0,float g=0)
{ n=new char[strlen(p)+1];
strcpy(n,p);
no=o;m=t;e=g;
}
void print()
{ cout<<"姓名:"<<n<<" "<<"学号:"<<no<<" "<<"数学:"<<m<<" "<<"英语:"<<e<<" "<<"平均成绩:"<<ave()<<" "<<"总成绩:"<<sum()<<'\n';
}
~student(){
if(n!=NULL)//加个判断好点
{delete []n;
n=NULL;
}
}
};
int main()
{ student z;
char na[10];
int No;
int i,j;//i,j
float ma,en;
int y,s2=0,s1=0;
cout<<"输入学生人数:";
cin>>y;
student*x=new student[y];
for(i=0;i<y;i++)
{ cout<<"输入第"<<i+1<<"名学生的姓名,学号,数学和英语成绩";
cin>>na>>No>>ma>>en;
x[i].input(na,No,ma,en);
s1+=ma;
s2+=en;
}
cout<<"数学平均成绩"<<s1/y<<'\n'<<"英语平均成绩"<<s2/y<<'\n';
for(i=1;i<y;i++)
{ for(j=0;j<y;j++)
if(x[j].sum()>x[j+1].sum())
{ z=x[j];
x[j]=x[j+1];
x[j+1]=x[j];
}
}
if(y<=5)
x[0].print();
else
for(i=0;i<y/5;i++)
x[i].print();
for(i=0;i<y;i++)
{
if(x[i].n!=NULL)//加个判断好点,相当于先释放子容器
{
delete []x[i].n;
x[i].n=NULL;
}
}
delete []x;//再释放你容器
while(1);
return 0;
}