c练习题.docx
- 文档编号:28227336
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:13
- 大小:17.03KB
c练习题.docx
《c练习题.docx》由会员分享,可在线阅读,更多相关《c练习题.docx(13页珍藏版)》请在冰豆网上搜索。
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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 练习题