C++题目x答案.doc

上传人:w****2 文档编号:6554135 上传时间:2020-02-28 格式:DOC 页数:11 大小:89KB
返回 下载 相关 举报
C++题目x答案.doc_第1页
第1页 / 共11页
C++题目x答案.doc_第2页
第2页 / 共11页
C++题目x答案.doc_第3页
第3页 / 共11页
点击查看更多>>
资源描述
1、 设计一个程序: 定义一个圆类,有数据成员半径radis(半径),计算圆的面积和周长,写出主函数测试你编写的类。2、 #include 3、 using namespace std;4、5、 float pi = 3.14;6、 class R7、 public:8、 float radis;9、 float getMJ()return radis*radis*pi;10、 float getZC()return radis*2*pi;11、 R(float in)radis=in;12、 ;13、14、 void main()15、 16、 R r(10);17、 cout半径:10n周长:r.getZC()n面积:r.getMJ();18、 19、2编写一个程序。用名为max的函数模板计算三个参数中的最大值,用整数、字符和浮点数测试所编写的程序。20、 #include 21、 using namespace std;22、 23、 template 24、 O Max(O a,O b, O c)return ab?ac?a:c:bc?b:c;25、 26、 void main()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、 #include 34、 using namespace std;35、36、 class Box37、 public:38、 float L;39、 float getBMJ()return L*L*6;40、 float getTJ()return L*L;41、 Box(float in)L=in;42、 ;43、44、 void main()45、 46、 Box r(10);47、 cout边长:10n表面积:r.getBMJ()n体积:r.getTJ();48、 4、编写一个程序计算“三角形、正方形、圆形”三种图形的面积。要求:a)抽象出一个基类base;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。1. #include 2. using namespace std;3.4. class base5. public:6. virtual float getMJ()return H*W;7. float H,W;8. ;9.10. class R:public base11. public:12. float getMJ()return H*H*3.14;13. R(float in)H=in;14. ;15.16. class A:public base17. public:18. float getMJ()return (H*W)/2;19. A(float in_H,float in_w)H=in_H;W=in_w;20. ;21.22. class S:public base23. public:24. float getMJ()return H*H;25. S(float in)H=in;26. ;27.28. void main()29. 30. R r(10);31. A a(10,5);32. S s(10);33. cout圆:边长:10n面积:r.getMJ()endl34. n三角:高:10,底:5n面积:a.getMJ()endl35. n正方形:边长:10n面积:s.getMJ();36. 5、定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:构造函数重载;成员函数设置缺省参数;定义一个友元函数来打印日期;定义一个非静态成员函数设置日期;可使用不同的构造函数来创建不同的对象。1. include 2. using namespace std;3.4. class TDate 5. 6. public:7. TDate():Year(1900),Month(1),Day(1);8. TDate(int Y, int M=1, int D=1)Month=M;Day=D;Year=Y;9. void set(int Y=1990, int M=1, int D=1)Month=M;Day=D;Year=Y;10. friend void show(TDate& in);11. private:12. int Month,Day,Year;13. ;14.15. void show(TDate& in)coutin.Year年in.Month月in.Day日n;16.17. void main()18. 19. TDate t1;20. TDate t2(2014);21. TDate t3(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. #include 2. #include 3. using namespace std;4.5. class Employee 6. public:7. string name;8. int id;9. virtual int getSal()return 0;10. Employee():name(未命名),id(0);11. Employee()cout析构n;12. void set(string N,int I)id=I; name=N; 13. void showSal()14. 15. coutn姓名:nameendl16. 工号:idendl17. 工资:getSal()endl;18. 19. ;20.21. class Manger:public Employee22. 23. public:24. Manger(int S)sal=S;25. int getSal()return sal;26. int sal;27. ;28. class HourlyWorker:public Employee29. 30. public:31. HourlyWorker(int W,int H)wage=W;hours=H;32. int getSal()return wage*hours;33. int wage,hours;34. ;35.36.37. void main()38. 39. HourlyWorker h(10,20);40. h.set(小时工A,777);41. h.showSal();42. Manger m(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. #include 4. #include MyClass.h5. void main()6. 7. MyClass obj(3.3); 8. cout obj.GetMember() endl; 9. obj.SetMember(5.6);10. cout obj.GetMember() endl; 11. 12. /*/13. /文件 MyClass.cpp14. #include MyClass.h15. float MyClass:GetMember()16. 17. return member;18. 19. void MyClass:SetMember(float member)20. 21. MyClass:member=member;22. 23. /在这里写出构造函数的实现函数24. 25. MyClass:MyClass(float in)26. 27. Member=in; 28. 29.30. /*/31. /文件 MyClass.h32. /类MyClass的定义33. class MyClass 34. /在下面写出类的定义体35. public: 36. MyClass(float in) 37. float GetMember(); 38. void SetMember(float member); 39. private: 40. float member; 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. #include 2. #include 3. using namespace std;4. const double PI=3.1415926535;5. class Point6. private:7. double x,y;8. public:9. Point()x = 0; y = 0; 10. Point(double xv,double yv)x = xv;y = yv;11. Point(Point& pt) x = pt.x; y = pt.y; 12. double getx()return x;13. double gety()return y;14. double Area()return 0;15. void Show()coutx=x y=yendl;16. ;17. class Circle :public Point18. double radius;19. public:20. Circle()radius = 0;21. Circle(double xv,double yv,double vv):Point(xv,yv)radius = vv;22. Circle(Circle& cc):Point(cc)radius = cc.radius; /拷贝构造函数23. double Area()return PI*radius*radius;24. void Show()/注意怎样访问基类的数据成员25. coutx=getx()ty=gety()tradius=radiusendl; 26. 27. int position(Point &pt)28. double distance = sqrt(getx()-pt.getx()*(getx()-pt.getx()29. +(gety()-pt.gety()*(gety()-pt.gety();30. double s=distance-radius;31. if(s=0) return 0; /在圆上32. else if(s0) return -1;/在圆内33. else return 1;/在圆外34. 35. ;36. class Rectangle:public Point37. double width,length;38. public:39. Rectangle()width=0; length=0; 40. Rectangle(double xv,double yv,double wv,double lv):Point(xv,xv)41. width = wv;42. length= lv;43. 44. Rectangle(Rectangle& rr):Point(rr)45. width = rr.width;46. length = rr.length;47. 48. double Area()return width*length;49. void Show()50. coutx=getx()ty=gety()t;coutwidth=widthtlength=lengthendl;51. 52. int position(Point &pt);53. ;54. int Rectangle:position(Point &pt)55. double s1,s2;56. s1 = (pt.getx()-getx(); s2=(pt.gety()-gety();57. if(s1=0|s1=width)&s2=length)|(s2=0|s2=length)&s1=width) return 0; 58. else if(s1width&s2length) return -1;/0在矩形上,-1在矩形内59. else return 1;/1在矩形外60. 61. int main()62. Circle cc1(3,4,5),cc2,cc3(cc1);63. Rectangle rt1(0,0,6,8),rt2,rt3(rt1);64. Point p1(0,0),p2(6,8),p3(3,3),p4(8,4),p5(8,8);65. cc1.Show();66. cc2.Show();67. rt1.Show();68. rt2.Show();69. cout点p1:;70. p1.Show();71. cout矩形rt3:t;72. rt3.Show();73. switch(rt3.position(p1)74. case 0:cout在矩形上endl;break;75. case -1:cout在矩形内endl;break;76. case 1:cout在矩形外endl;break;77. 78. cout圆cc3:t;79. cc3.Show();80. switch(cc3.position(p1)81. case 0:cout在圆上endl;break;82. case -1:cout在圆内endl;break;83. case 1:cout在圆外endl;break;84. 85. cout点p2:;86. p2.Show();87. cout矩形rt3:t;88. rt3.Show();89. switch(rt3.position(p2)90. case 0:cout在矩形上endl;break;91. case -1:cout在矩形内endl;break;92. case 1:cout在矩形外endl;break;93. 94. cout圆cc3:t;95. cc3.Show();96. switch(cc3.position(p2)97. case 0:cout在圆上endl;break;98. case -1:cout在圆内endl;break;99. case 1:cout在圆外endl;break;100. 101. cout点p3:;102. p3.Show();103. cout矩形rt3:t;104. rt3.Show();105. switch(rt3.position(p3)106. case 0:cout在矩形上endl;break;107. case -1:cout在矩形内endl;break;108. case 1:cout在矩形外endl;break;109. 110. cout圆cc3:t;111. cc3.Show();112. switch(cc3.position(p3)113. case 0:cout在圆上endl;break;114. case -1:cout在圆内endl;break;115. case 1:cout在圆外endl;break;116. 117. cout点p4:;118. p4.Show();119. cout矩形rt3:t;120. rt3.Show();121. switch(rt3.position(p4)122. case 0:cout在矩形上endl;break;123. case -1:cout在矩形内endl;break;124. case 1:cout在矩形外endl;break;125. 126. cout圆cc3:t;127. cc3.Show();128. switch(cc3.position(p4)129. case 0:cout在圆上endl;break;130. case -1:cout在圆内endl;break;131. case 1:cout在圆外endl;break;132. 133. cout点p5:;134. p5.Show();135. cout矩形rt3:t;136. rt3.Show();137. switch(rt3.position(p5)138. case 0:cout在矩形上endl;break;139. case -1:cout在矩形内endl;break;140. case 1:cout在矩形外endl;break;141. 142. cout圆cc3:t;143. cc3.Show();144. switch(cc3.position(p5)145. case 0:cout在圆上endl;break;146. case -1:cout在圆内endl;break;147. case 1:cout在圆外endl;break;148. 149.150. return 0;151.
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!