| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 610 人关注过本帖
标题:C++问题
只看楼主 加入收藏
茶未凉
Rank: 1
来 自:湖北十堰
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
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();

}
 
 
 
 
 
 


 
 
 

 
 
 
 

 
 
搜索更多相关主题的帖子: 大学生 研究生 大学教师 高等数学 博士后 
2011-06-16 17:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
自己调试调试看看呗。
如果你用的 vc,方法就是按 f5,而不是 ctrl-f5。然后看程序停在了什么地方。
2011-06-17 22:24
try_catch
Rank: 2
等 级:论坛游民
帖 子:32
专家分:82
注 册:2011-6-17
收藏
得分:10 
你的指针有问题
比如说。。你有两个指针指到同一块内存位置(一个new object),其中一个指针释放了,而另一个指针还想调用那个object,就出现内存错误了
这个问题的起因是你对内存分配和调用还不熟悉
2011-06-21 06:18
茶未凉
Rank: 1
来 自:湖北十堰
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-15
收藏
得分:0 
  懂了  好久没进了

  为目标  奋斗!!
2012-12-05 16:28
快速回复:C++问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020775 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved