c练习题.docx

上传人:b****8 文档编号:28227336 上传时间:2023-07-09 格式:DOCX 页数:13 大小:17.03KB
下载 相关 举报
c练习题.docx_第1页
第1页 / 共13页
c练习题.docx_第2页
第2页 / 共13页
c练习题.docx_第3页
第3页 / 共13页
c练习题.docx_第4页
第4页 / 共13页
c练习题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

c练习题.docx

《c练习题.docx》由会员分享,可在线阅读,更多相关《c练习题.docx(13页珍藏版)》请在冰豆网上搜索。

c练习题.docx

c练习题

C++练习题

一、编程题:

所有的题需要在主函数中定义对象并测试类的功能。

1、编写一个三角形类,有计算面积,显示面积的功能等。

要求有无参数的和带

参数的构造函数。

2、设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

要求有无参数的和带参数的构造函数。

3、定义一个国家基类Country,包含国名、首都、人口等属性,派生出省类Province,增加省会城市、人口数量属性。

4、利用Clock类,派生一个带“AM”、“PM”的新时钟类NewClock。

5、建立一个基类Building,用来存储一座楼房的层数、房间数以及它的总平方英尺数。

建立派生类Housing,继承Building,并存储下面的内容:

卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。

然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据。

6、设计一个建筑物类Building,由它派生出教学楼Teach-Building和宿舍楼类Dorm-Building,前者包括教学楼编号、层数、教室数、总面积等基本信息,后者包括宿舍楼编号、层数、宿舍数、总面积和容纳学生总人数等基本信息。

7、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,

教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。

8、声明一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。

使用Rectangle类创建一个派生类Square。

9、使用虚函数编写程序求球体和圆柱体的体积及表面积。

由于球体和圆柱体都

可以看作由圆继承而来,所以可以定义圆类circle作为基类。

在circle类中定义一个数据成员radius和两个虚函数area()和volume()。

由circle类派生sphere类和column类。

在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。

二、写出程序结果

1、某学校对教师每月工资的计算公式如下:

固定工资+课时补贴。

教授的固定工资为5000元,每个课时补贴50元;副教授的固定工资为3000元,每个课时补贴30元;讲师的固定工资为2000元,每个课时补贴20元。

定义教师抽象类,派生不同职称的教师类,编写程序求若干教师的月工资。

#include

usingnamespacestd;

classTeacher{

protected:

doublesalary;

intworkhours;

public:

Teacher(intwh=0){workhours=wh;}

virtualvoidcal_salary()=0;

voidprint(){cout<

};

classProf:

publicTeacher{

public:

Prof(intwh=0):

Teacher(wh){}

voidcal_salary(){

salary=workhours*50+5000;

}

};

classVice_Prof:

publicTeacher{

public:

Vice_Prof(intwh=0):

Teacher(wh){}

voidcal_salary(){

salary=workhours*30+3000;

}

};

classLecture:

publicTeacher{

public:

Lecture(intwh=0):

Teacher(wh){}

voidcal_salary(){

salary=workhours*20+2000;

}

};

intmain(){

Teacher*pt;

Profprof(200);

pt=&prof;

pt->cal_salary();

prof.print();

}Vice_Profvice_prof(250);

pt=&vice_prof;

pt->cal_salary();

vice_prof.print();

Lecturelecture(100);

pt=&lecture;

pt->cal_salary();

lecture.print();

return0;

2、有一个交通工具类vehicle,将它作为基类派生小车类car、卡车类truck和轮船类boat,定义这些类并定义一个虚函数用来显示各类信息。

#include

#include

usingnamespacestd;

classVehicle{

public:

virtualvoidshowinfo()=0;

protected:

charName[20];

};

classCar:

publicVehicle{

public:

Car(char*name){

strcpy(Name,name);

}

voidshowinfo(){cout<

protected:

intRadius;

};

classTruck:

publicVehicle{

public:

Truck(char*name){

strcpy(Name,name);

}

voidshowinfo(){cout<

};

classBoat:

publicVehicle{

public:

Boat(char*name){

strcpy(Name,name);

}

voidshowinfo(){cout<

};

intmain(){

Vehicle*vp;

Carcar("奔驰");

Trucktruck("运输卡车");

Boatboat("游艇");

vp=&car;

vp->showinfo();

vp=&truck;

vp->showinfo();

vp=&boat;

vp->showinfo();

return0;

}

3、定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()。

#include

#include

usingnamespacestd;

classShape{

public:

virtualvoidArea()=0;

};

classRectangle:

publicShape{

public:

Rectangle(doublew,doubleh){

width=w,height=h;

}

voidArea(){cout<

protected:

doublewidth,height;

};

classCircle:

publicShape{

public:

Circle(doubler){

radius=r;

}

voidArea(){cout<<3.1415*radius*radius<

protected:

doubleradius;

};

intmain(){

Shape*sp;

Rectanglere1(10,6);

Circlecir1(4.0);

sp=&re1;

sp->Area();

sp=&cir1;

sp->Area();

return0;

}

4、定义猫科动物Animal类,由其派生出猫类(Cat)和豹类(Leopard),二者都包含虚函数sound(),要求根据派生类对象的不同调用各自重载后的成员函数。

#include

usingnamespacestd;

classAnimal{

public:

virtualvoidSpeak()=0;

};

classCat:

publicAnimal{

voidSpeak(){

cout<<"MynameisCat"<

}

};

classLeopard:

publicAnimal{

voidSpeak(){

cout<<"MynameisLeopard"<

}

};

intmain(){

Animal*pa;

Catcat;

pa=&cat;

pa->Speak();

Leopardleopard;

pa=&leopard;

}pa->Speak();

return0;

5、建立一个基类Building,用来存储一座楼房的层数、房间数以及它的总平方英尺数。

建立派生类Housing,继承Building,并存储下面的内容:

卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。

然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据。

程序代码:

#include

usingnamespacestd;

classBuilding

{public:

Building(intf,intr,doubleft)

{floors=f;

rooms=r;

footage=ft;

}

voidshow()

{cout<<"floors:

"<

cout<<"rooms:

"<

cout<<"totalarea:

"<

}

protected:

intfloors;

introoms;

doublefootage;

};

classHousing:

publicBuilding

{public:

Housing(intf,intr,doubleft,intbd,intbth):

Building(f,r,ft)

{bedrooms=bd;

bathrooms=bth;

}

voidshow()

{cout<<"\nHOUSING:

\n";

Building:

:

show();

cout<<"bedrooms:

"<

cout<<"bathrooms:

"<

}

private:

intbedrooms;

intbathrooms;

};

classOffice:

publicBuilding

{

public:

Office(intf,intr,doubleft,intph,intex):

Building(f,r,ft)

{phones=ph;

extinguishers=ex;

}

voidshow()

{cout<<"\nHOUSING:

\n";

Building:

:

show();

cout<<"phones:

"<

cout<<"extinguishers:

"<

}

private:

intphones;

intextinguishers;

};

voidmain()

{Housinghob(5,7,140,2,2);

Officeoob(8,12,500,12,2);

hob.show();

oob.show();

}

6、看程序写结果

#include

usingnamespacestd;

classparent

{inti;

protected:

intx;

public:

parent(){x=0;i=0;}

voidchange(){x++;i++;}

voiddisplay();

};

classson:

publicparent

{public:

voidmodify();

};

voidparent:

:

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

voidson:

:

modify(){x++;}

voidmain()

{sonA;parentB;

cout<<"DisplayderivedclassobjectA:

\n";

A.display();A.change();

A.display();A.modify();

A.display();cout<<"DisplaybaseclassobjectB:

\n";

B.change();B.display();

}

7、看程序写结果

#include

usingnamespacestd;

classbase

{public:

voidshow(){cout<<"classbaseshow()iscalled.\n";}

};

classderived:

publicbase

{public:

voidshow(){cout<<"classderivedshow()iscalled.\n";}

};

voidmain()

{basedemo1;

deriveddemo2;

demo1.show();

demo2.show();

demo2.base:

:

show();

}

8、看程序写结果

#include

usingnamespacestd;

classB1{

public:

B1(inti){cout<<"constructingB1"<

~B1(){cout<<"destructingB1"<

};

classB2{

public:

B2(){cout<<"constructingB3*"<

~B2(){cout<<"destructingB3"<

};

classC:

publicB2,virtualpublicB1{

intj;

public:

C(inta,intb,intc):

B1(a),memberB1(b),j(c){}

private:

B1memberB1;

B2memberB2;

};

intmain(){

Cobj(1,2,3);

}

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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