北邮信通C++上机实验七 第八章.docx

上传人:b****7 文档编号:23926703 上传时间:2023-05-22 格式:DOCX 页数:19 大小:53.14KB
下载 相关 举报
北邮信通C++上机实验七 第八章.docx_第1页
第1页 / 共19页
北邮信通C++上机实验七 第八章.docx_第2页
第2页 / 共19页
北邮信通C++上机实验七 第八章.docx_第3页
第3页 / 共19页
北邮信通C++上机实验七 第八章.docx_第4页
第4页 / 共19页
北邮信通C++上机实验七 第八章.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

北邮信通C++上机实验七 第八章.docx

《北邮信通C++上机实验七 第八章.docx》由会员分享,可在线阅读,更多相关《北邮信通C++上机实验七 第八章.docx(19页珍藏版)》请在冰豆网上搜索。

北邮信通C++上机实验七 第八章.docx

北邮信通C++上机实验七第八章

8.3实验题

一、基础题

1.要求:

(1)上机调试以下有语法错误的程序,输出结果如图8-1,对有注释标记的语句进行注释。

(2)添加适当的语句,上机验证构造函数和析构函数执行的次序和次数。

#include

usingnamespacestd;

classbase

{

inta,b;

public:

base(inti,intj){a=i;b=j;};

voidmove(intx,inty){a+=x;b+=y;}

voidshow(){cout<<"a="<

};

classderived1:

publicbase

{

intx,y;

public:

derived1(inti,intj,intk,intl):

base(i,j){x=k;y=l;}

voidshow(){cout<<"x="<

voidfun(){move(3,5);}

voidf1(){base:

:

show();}};

voidmain()

{

basee(1,2);

e.show();

derived1d(3,4,5,6);

d.fun();

d.base:

:

show();

d.derived1:

:

show();

d.f1();

}

运行结果:

图8-1第1题的输出

2.上机调试下列有语法错误的程序,然后使其输出如图8-2的结果。

#include

usingnamespacestd;

classbase

{

public:

voiddisp(){cout<<"baseclass"<

};

classderived1:

publicbase

{

public:

voiddisp(){cout<<"derived1class"<

};

classderived2:

publicbase

{

public:

voiddisp(){cout<<"derived2class"<

};

voidmain()

{

baseobj1,*p;

derived1obj2;

derived2obj3;

cout<

obj1.disp();

obj2.disp();

obj3.disp();

cout<

p=&obj1;

p->disp();

p=&obj2;

p->disp();

p=&obj3;

p->disp();

}

其运行结果:

图8-2第2题的输出

3.阅读以下程序,写出程序的运行结果

#include

usingnamespacestd;

classbase

{

inta;

public:

voidseta(intx){a=x;}

voidshowa(){cout<

};

classderived1

{

intb;

public:

voidsetb(intx){b=x;}

voidshowb(){cout<

};

classderived3:

publicbase,publicderived1

{

intc;

public:

voidsetc(intx,inty,intz){c=z;seta(x);setb(y);}

voidshowc(){cout<

};

voidmain()

{

derived3A;

A.seta(10);A.showa();

A.setc(11,22,33);A.showc();

}

运行结果:

10

33

4.上机调试并修改程序中的语法错误,并分析运行结果

#include

usingnamespacestd;

classperson//

{

char*name;

intage;

charadd;

public:

person(){cout<<"personclassconstructor"<

~person(){cout<<"personclassdestructor"<

};

classstudent:

publicperson//

{

char*department;//

intlevel;//

public:

student(){cout<<"studentclassconstructor"<

~student(){cout<<"studentclassdestructor"<

};

classteacher:

publicperson//

{

char*major;

floatsalary;

public:

teacher(){cout<<"teacherclassconstructor"<

~teacher(){cout<<"teacherclassdestructor"<

};

voidmain()

{

students1;//

teachert1;//

}

5.分析程序的结果,并总结多重继承的用途

#include

usingnamespacestd;

classbase

{

intbase_a;

public:

voidset_base_a(intx){base_a=x;}

voidshow_base_a(){cout<<"base_a="<

};

classderived1

{

intderived_b;

public:

voidset_derived_b(intx){derived_b=x;}

voidshow_derived_b(){cout<<"derived_b="<

};

classderived_base_d1:

publicbase,derived1

{

intderived_c;

public:

voidset_derived_c(intx,inty)

{derived_c=x;

set_derived_b(y);

}

voidshow_derived_c()

{show_base_a();

show_derived_b();

cout<<"derived_c="<

};

voidmain()

{

derived_base_d1obj;

obj.set_base_a(13);

obj.set_derived_c(16,30);

obj.show_derived_c();

obj.show_base_a();

}

二、编程题

1.编写一个程序,定义一个汽车类(Cer),它具有一个需要传递参数的构造函数,类中的数据成员有:

车型model、座位seat和车重weight,并放在保护段中;由父类私有派生出两个类,分别是JEEP类和bus类。

要求每个类都有相关数据的输出。

#include

usingnamespacestd;

classcar

{

public:

voidget()

{

cout<<"model:

";

cin>>model;

cout<<"seat:

";

cin>>seat;

cout<<"weight:

";

cin>>weight;

}

voidshow()

{

cout<<"carmodel:

"<

"<

"<

}

protected:

charmodel;

intseat;

doubleweight;

};

classjeep:

publiccar

{

public:

voidget()

{

cout<<"model:

";

cin>>model;

cout<<"seat:

";

cin>>seat;

cout<<"weight:

";

cin>>weight;

}

voidshow()

{

cout<<"carmodel:

"<

"<

"<

}

};

classbus:

publiccar

{

public:

voidget()

{

cout<<"model:

";

cin>>model;

cout<<"seat:

";

cin>>seat;

cout<<"weight:

";

cin>>weight;

}

voidshow()

{

cout<<"carmodel:

"<

"<

"<

}

};

voidmain()

{

jeepa;

a.get();

a.show();

busb;

b.get();

b.show();

}

2.设计一个父亲类father、母亲类mather、子女类child,其主要数据是姓名、子女使用父亲的姓,最后输出子女的姓名和父母的姓名。

#include

#include"string"

usingnamespacestd;

classfather

{

private:

stringm;

protected:

stringx;

public:

voidgeti(){

cin>>x>>m;

}

voidshow1(){

cout<<"父亲的姓名为:

"<

}

};

classmother

{

private:

stringname;

public:

voidget1(){

cin>>name;}

voidshow2(){

cout<<"母亲的姓名为:

"<

};

classchild:

publicfather

{

private:

stringname;

public:

voidget2(){

cin>>name;}

voidshow3(){

cout<<"子女的姓名为:

"<

};

voidmain()

{

fatherf;motherm;childc;

cout<<"请分别输入父亲的姓和名:

"<

f.geti();

cout<<"请输入母亲的名字:

"<

m.get1();

cout<<"请输入子女的名字:

"<

c.get2();

f.show1();

m.show2();

c.show3();

}

3.编写一个程序,已有若干名学生数据,这些数据包括学号、姓名、语文成绩、英语成绩、和数学成绩,要求设计不同的成员函数求各门课程的平均分。

#include

#include

usingnamespacestd;

classstudent

{

public:

intnum;

charname[20];

intchinese;

intmath;

intenglish;

intaverage()

{

intt=(chinese+math+english)/3;

returnt;

};

};

4.建立一个简单的大学管理系统,其中有学生、教师和教辅人员。

类的继承关系如图8-3所示。

每个类定义一个相对于特定的不同的输出函数print(),输出各类的数据成员。

#include

#include"string"

usingnamespacestd;

classuni

{

private:

stringname;

public:

uni(){

name="北京邮电大学";

}

voidprint(){

cout<<"学校:

"<

}

};

classstu:

publicuni{

private:

stringsname;

intxh;

public:

stu(){

sname="张三";

xh=1;

}

voidprint1(){

cout<<"学生姓名:

"<

"<

}

};

classtea:

publicuni{

private:

stringtname;

public:

tea(){

tname="李四";

}

voidprint2(){

cout<<"教师姓名:

"<

}

};

classass:

publictea{

private:

stringaname;

public:

ass(){

aname="王五";

}

voidprint4(){

cout<<"教辅人员姓名:

"<

}

};

voidmain()

{

assa;stus;

a.print();

s.print1();

a.print2();

a.print4();

图8-3编程第4题的继承关系

5.编一个程序,其中有三个类,分别为中国银行,浦发银行和招商银行,每个银行都包含一个用于存储用户存款的成员,要求用面向对象的编程方法求出用户在三个银行总的存款金额并显示出来。

#include

#include"string"

usingnamespacestd;

classzgyh

{

protected:

intmoney1;

public:

voidzgyh1(){

cin>>money1;

}

};

classpfyh{

protected:

intmoney2;

public:

voidpfyh1(){

cin>>money2;

}

};

classzsyh{

protected:

intmoney3;

public:

voidzsyh1(){

cin>>money3;

}

};

classz:

publiczgyh,publicpfyh,publiczsyh{

public:

voidshow(){

cout<<"总存款金额为:

"<

}

};

voidmain()

{

zzje;

cout<<"请输入存入中国银行的金额:

"<

zje.zgyh1();

cout<<"请输入存入浦发银行的金额:

"<

zje.pfyh1();

cout<<"请输入存入招商银行的金额:

"<

zje.zsyh1();

cout<<"总金额为:

"<

zje.show();

}

2.

#include

#include

usingnamespacestd;

classfather{

public:

charxing[10];

charming[15];

voidfather(chara[10],charb[15])

{

strcpy(xing,a);

strcpy(ming,b);

};

};

classchild:

publicfather

{

};

classmother

{

};

voidmain()

{

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1