您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > C++题目x答案解析
1、设计一个程序:定义一个圆类,有数据成员半径radis(半径),计算圆的面积和周长,写出主函数测试你编写的类。2、#includeiostream3、usingnamespacestd;4、5、floatpi=3.14;6、classR7、{public:8、floatradis;9、floatgetMJ(){returnradis*radis*pi;}10、floatgetZC(){returnradis*2*pi;}11、R(floatin){radis=in;}12、};13、14、voidmain()15、{16、Rr(10);17、cout半径:10\n周长:r.getZC()\n面积:r.getMJ();18、}19、2编写一个程序。用名为max的函数模板计算三个参数中的最大值,用整数、字符和浮点数测试所编写的程序。20、#includeiostream21、usingnamespacestd;22、23、templatetypenameO24、OMax(Oa,Ob,Oc){returnab?ac?a:c:bc?b:c;}25、26、voidmain()27、{28、coutMax(9,1,8)endl;29、coutMax(7.0,3.2,9.9)endl;30、coutMax('a','z','b');31、}32、设计一个立方体类Box,它能计算并输出立方体的体积和表面积。33、#includeiostream34、usingnamespacestd;35、36、classBox37、{public:38、floatL;39、floatgetBMJ(){returnL*L*6;}40、floatgetTJ(){returnL*L;}41、Box(floatin){L=in;}42、};43、44、voidmain()45、{46、Boxr(10);47、cout边长:10\n表面积:r.getBMJ()\n体积:r.getTJ();48、}4、编写一个程序计算“三角形、正方形、圆形”三种图形的面积。要求:a)抽象出一个基类base;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。1.#includeiostream2.usingnamespacestd;3.4.classbase5.{public:6.virtualfloatgetMJ(){returnH*W;}7.floatH,W;8.};9.10.classR:publicbase11.{public:12.floatgetMJ(){returnH*H*3.14;}13.R(floatin){H=in;}14.};15.16.classA:publicbase17.{public:18.floatgetMJ(){return(H*W)/2;}19.A(floatin_H,floatin_w){H=in_H;W=in_w;}20.};21.22.classS:publicbase23.{public:24.floatgetMJ(){returnH*H;}25.S(floatin){H=in;}26.};27.28.voidmain()29.{30.Rr(10);31.Aa(10,5);32.Ss(10);33.cout圆:边长:10\n面积:r.getMJ()endl34.\n三角:高:10,底:5\n面积:a.getMJ()endl35.\n正方形:边长:10\n面积:s.getMJ();36.}5、定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:①构造函数重载;②成员函数设置缺省参数;③定义一个友元函数来打印日期;④定义一个非静态成员函数设置日期;⑤可使用不同的构造函数来创建不同的对象。1.includeiostream2.usingnamespacestd;3.4.classTDate5.{6.public:7.TDate():Year(1900),Month(1),Day(1){;}8.TDate(intY,intM=1,intD=1){Month=M;Day=D;Year=Y;}9.voidset(intY=1990,intM=1,intD=1){Month=M;Day=D;Year=Y;}10.friendvoidshow(TDate&in);11.private:12.intMonth,Day,Year;13.};14.15.voidshow(TDate&in){coutin.Year年in.Month月in.Day日\n;}16.17.voidmain()18.{19.TDatet1;20.TDatet2(2014);21.TDatet3(2015,6,5);22.show(t1);23.show(t2);24.show(t3);25.26.t3.set(1999);27.show(t3);28.}6、编程实现抽象类Employee,派生类Manger和HourlyWorker,Employee有数据成员姓名name和工号ID,Manger有数据成员sal,代表经理的月工资,HourlyWorker有wage和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名name和工号ID。1.#includeiostream2.#includestring3.usingnamespacestd;4.5.classEmployee6.{public:7.stringname;8.intid;9.virtualintgetSal(){return0;}10.Employee():name(未命名),id(0){};11.~Employee(){cout析构\n;}12.voidset(stringN,intI){id=I;name=N;}13.voidshowSal()14.{15.cout\n姓名:nameendl16.工号:idendl17.工资:getSal()endl;18.}19.};20.21.classManger:publicEmployee22.{23.public:24.Manger(intS){sal=S;}25.intgetSal(){returnsal;}26.intsal;27.};28.classHourlyWorker:publicEmployee29.{30.public:31.HourlyWorker(intW,intH){wage=W;hours=H;}32.intgetSal(){returnwage*hours;}33.intwage,hours;34.};35.36.37.voidmain()38.{39.HourlyWorkerh(10,20);40.h.set(小时工A,777);41.h.showSal();42.Mangerm(999);43.m.set(经理A,888);44.m.showSal();45.}1.8、回答下面问题。下面列出了由三个文件main.cpp、MyClass.h和MyClass.cpp组成的一个程序。文件main.cpp中实现了主函数;文件MyClass.h中定义了类MyClass;文件MyClass.cpp中实现了类MyClass的成员函数。题中没有给出三个文件的完整实现。仔细阅读所给的程序,根据题意补充文件MyClass.h和文件MyClass.cpp的内容。要求:a.将成员变量定义为私有的;b.不要增加题中没有用到的类成员。1./********************************************************/2.//文件main.cpp3.#includeiostream.h4.#includeMyClass.h5.voidmain()6.{7.MyClassobj(3.3);8.coutobj.GetMember()endl;9.obj.SetMember(5.6);10.coutobj.GetMember()endl;11.}12./***********************************************************************/13./文件MyClass.cpp14.#includeMyClass.h15.floatMyClass::GetMember()16.{17.returnmember;18.}19.voidMyClass::SetMember(floatmember)20.{21.MyClass::member=member;22.}23.//在这里写出构造函数的实现函数24.25.MyClass::MyClass(floatin)26.{27.Member=in;28.}29.30./***********************************************************************/31.//文件MyClass.h32.//类MyClass的定义33.classMyClass{34.//在下面写出类的定义体35.public:36.MyClass(floatin)37.floatGetMember();38.voidSetMember(floatmember);39.private:40.floatmember;41.};10、某公司雇员(employee)包括经理(manager),技术人员(technician)和销售员(salesman)。开发部经理(developermanger),既是经理也是技术人员。销售部经理(salesmanager),既是经理也是销售员。以employ类为虚基类派生出manager,technician和salesman类;再进一步派生出developermanager和salesmanager类。employee类的属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资)。操作包括月薪计算函数(pay()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。technician类派生的属性有每小时附加酬金和当月工作时数,及研究完成进度系数。业绩工资为三者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。salesman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。manager类派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。而developermanager类,pay()函数是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。salesamanager类,pay()函数则是经理的固定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资。编程实现工资管理。特别注意pay()的定义和调用方法:先用同名覆盖,再用运行时多态。同第6题9、以点(point)类为基类,重新定义矩形类和圆类。点为直角坐标点,矩形水平放置,由左下方的顶点和长宽定义。圆由圆心和半径定义。派生类操作判断任一坐标点是在图形内,还是在图形的边缘上,还是在图形外。缺省初始化图形退化为点。要求包括拷贝构造函数。编程测试类设计是否正确。1.#includeiostream2.#includecmath3.usingnamespacestd;4.constdoublePI=3.1415926535;5.classPoin
本文标题:C++题目x答案解析
链接地址:https://www.777doc.com/doc-1856175 .html