C++问题
这个程序编译没有问题,可是运行的时候,出现了下面这样的情况 , 这是为什么啊?{"0x0040607b"指令引用的"0x00000000"内存。该内存不能"read"。}
/***
**********
3设计一个大学教师和学生管理程序,
教师包括编号、姓名、职称和教研室数据的输入和输出;
大学生包括编号、姓名、性别、班号、英语、高等数学和数据结构3门课成绩的输入输出和计算平均分;
研究生包括编号、姓名、性别、班号、指导教师和研究方法数据输入输出;
博士后数据的输入输出,博士后既是教师也是研究生。
要求:输入并输出一个教师、一个大学生和一个博士后的数据。
***********
***/
#include "iostream.h"
#include "string.h"
class person{
public:
person(char*a=0,char *b=0){
strcpy(BianH,a);
strcpy(name,b);
}
~person(){};
void SetXinXi(char*a=0,char *b=0){
strcpy(BianH,a);
strcpy(name,b);
}
void display(){
cout<<"编号:"<<BianH<<" 姓名:"<<name;
}
private:
char BianH[10];//编号
char name[10];//姓名
};
class teacher:virtual public person{//教师
private:
char ZhiC[10];//职称
char JiaoXS[15];//教研室
public:
teacher(char*a=0,char *b=0,char *c=0,char *d=0):person(a,b){
strcpy(ZhiC,c);
strcpy(JiaoXS,d);
}
~teacher(){cout<<"教师消失!"<<endl;}
void SetXinXi(char*a=0,char *b=0,char *c=0,char *d=0){
person::SetXinXi(a,b);
strcpy(ZhiC,c);
strcpy(JiaoXS,d);
}
void display(){
cout<<"信息:"<<endl;
person::display();
cout<<" 职称:"<<ZhiC<<" 教研室:"<<JiaoXS<<endl;
}
};
class student:public person{//大学生
private:
char XingB[3];//性别
char BanH[10];//班号
int YingY;//英语
int ShuX;//高等数学
int ShuJu;//数据结构
public:
student(char*a=0,char *b=0,char *c=0,char *d=0,int e=0,int f=0,int g=0):person(a,b){
strcpy(XingB,c);
strcpy(BanH,d);
YingY=e;
ShuX=f;
ShuJu=g;
}
~student(){cout<<"大学生消失!"<<endl;}
void SetXinXi(char*a=0,char *b=0,char *c=0,char *d=0,int e=0,int f=0,int g=0){
person::SetXinXi(a,b);
strcpy(XingB,c);
strcpy(BanH,d);
YingY=e;
ShuX=f;
ShuJu=g;
}
void display(){
cout<<"大学生信息:"<<endl;
person::display();
cout<<" 性别:"<<XingB<<" 班号:"<<BanH<<" 英语:"<<YingY<<" 高等数学:"<<ShuX<<" 数据结构:"<<ShuJu<<endl;
}
};
class YanjiuS:virtual public person{//研究生
private:
char XingB[3];//性别
char BanH[10];//班号
char ZhiD[10];//指导教师
char YanJ[20];//研究方法
public:
YanjiuS(char*a=0,char *b=0,char *c=0,char *d=0,char *e=0,char *f=0):person(a,b){
strcpy(XingB,c);
strcpy(BanH,d);
strcpy(ZhiD,e);
strcpy(YanJ,f);
}
~YanjiuS(){cout<<"研究生消失!"<<endl;}
void SetXinXi(char*a=0,char *b=0,char *c=0,char *d=0,char *e=0,char *f=0){
person::SetXinXi(a,b);
strcpy(XingB,c);
strcpy(BanH,d);
strcpy(ZhiD,e);
strcpy(YanJ,f);
}
void display(){
cout<<"研究生信息:"<<endl;
person::display();
cout<<" 性别:"<<XingB<<" 班号:"<<BanH<<" 指导教师:"<<ZhiD<<" 研究方法:"<<YanJ<<endl;
}
};
class Boshihou:public teacher,public YanjiuS{//博士后
public:
Boshihou(char*a=0,char *b=0,char *c=0,char *d=0,char *e=0,char *f=0,char *g=0,char *h=0):person(a,b),YanjiuS(a,b,c,d,e,f),teacher(a,b,g,h){}
~Boshihou(){cout<<"博士后消失!"<<endl;}
void SetXinXi(char*a=0,char *b=0,char *c=0,char *d=0,char *e=0,char *f=0,char *g=0,char *h=0){
YanjiuS::SetXinXi(a,b,c,d,e,f);
teacher::SetXinXi(a,b,g,h);
}
void display(){
cout<<"博士后信息:"<<endl;
YanjiuS::display();
teacher::display();
}
};
void main(){
teacher s1;
student s2;
YanjiuS s3;
Boshihou s4;
//person *x[4]={&s1,&s2,&s3,&s4};
char a[10],b[10],c[10],d[15];
cout<<"请输入教师信息(包括编号、姓名、职称和教研室):"<<endl;
cin>>a>>b>>c>>d;
s1.SetXinXi(a,b,c,d);
s1.display();
char e[10],f[10],g[3],h[10];
int i,j,k;
cout<<"请输入大学生信息:(包括编号、姓名、性别、班号、英语、高等数学和数据结构3门课成绩):"<<endl;
cin>>e>>f>>g>>h>>i>>j>>k;
s2.SetXinXi(e,f,g,h,i,j,k);
s2.display();
char l[10],m[10],n[3],o[10],p[10],q[20],r[10],s[15];
cout<<"请输入博士后信息:(包括编号、姓名、性别、班号、指导教师和研究方法、职称和教研室):"<<endl;
cin>>l>>m>>n>>o>>p>>q>>r>>s;
s4.SetXinXi(l,m,n,o,p,q,r,s);
s4.display();
}