C++题目x答案_第1页
C++题目x答案_第2页
C++题目x答案_第3页
C++题目x答案_第4页
C++题目x答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 1、 设计一个程序 : 定义一个圆类,有数据成员半径radis( 半径),计算圆的面积和周长 ,写出主函数测 试你编写的类。 2、 #include 3、 using namespace std ; 4、 float pi = ; 5、 class R 6、 public : 7、 float radis ; 8、 float getMJ () return radis * radis *pi 9、 float getZC () return radis *2*pi ; 10、R( float in ) radis =in ; 11、; 12、void main () 13、 14、R r

2、( 10); 15、cout 半径: 10n 周长: () n 面积: (); 16、 2 编写一个程序。用名为 max 的函数模板计算三个参数中的最大值,用整数、字符和浮点数测试所编 写的程序。 17、#include 18、using namespace std ; 19、t emplate 20、O Max(O a, O b, O c ) return a b?ac?a: c: bc?b: c; 21、void main () 22、 23、cout Max( 9, 1, 8) endl ; 24、cout Max, endl ; 25、cout Max( a , z , b ); 26

3、、 27、设计一个立方体类 Box ,它能计算并输出立方体的体积和表面积 28、#include 29、using namespace std ; 30、class Box 31、 public : 32、float L ; 33、float getBMJ () return L *L*6; 34、 floa t getTJ () return L *L; 35、 Box ( float in ) L=in ; 36、 ; 37、 void main () 38、 39、 Box r (10); 40、 cout 边长: 10n 表面积: 41、 () n 体积: 4、编写一个程序计算“三角形

4、、正方形、圆形”三种图形的面积 (); 要求: a) 抽象出一个基类 base ; b) 在其中说明一个虚函数用来求面积; c) 利用派生类定义“三角形、正方形、圆形”; d) 编写主函数并测试。 1. #include 2. using namespace std ; 3. class base 4. public : 5. virtual float getMJ () return H*W; 6. float H, W; 7. ; 8. class R: public base 9. public 10. float getMJ () return H* H*; 11. R( float

5、in ) H=in ; 12. ; 13. class A : public base 14. public : 15. float getMJ () return ( H*W)/ 2; 16. A( float in_H , float in _w ) H=in_H ; W=in_w 17. ; 18. class S : public base 19. public : 20. float getMJ () return H* H; 21. S( float in ) H=in ; 22. ; 23. void main () 24. 25. R r ( 10); 26. A a ( 10

6、, 5); 27. S s ( 10); 28. cout 圆:边长: 10n 面积: () endl 29. n 三角:高: 10,底:5n 面积: () endl 30. n 正方形:边长 :10n 面积: (); 31. 5 、定义一个处理日期的类 TDate ,它有 3 个私有数据成员: Month,Day,Year 和若干个公有成员函数, 并实现如下要求:构造函数重载;成员函数设置缺省参数;定义一个友元函数来打印日期;定 义一个非静态成员函数设置日期;可使用不同的构造函数来创建不同的对象。 1. include 2. using namespace std ; 3. class TD

7、ate 4. 5. public : 6. TDate (): Year ( 1900), Month ( 1), Day( 1); 7. TDate ( int Y, int M=1, int D=1) Month =M; Day=D; Year =Y; 8. void set ( int Y =1990 , int M=1, int D=1) Month =M; Day=D; Year =Y; 9. friend void show ( TDate 10. private : 11. int Month , Day, Year; 12. ; 13. void show ( TDate 14

8、. void main () 15. 16. TDate t1 ; 17. TDate t2 ( 2014); 18. TDate t3 ( 2015, 6, 5); 19. show ( t1 ); 20. show ( t2 ); 21. show ( t3 ); 22. ( 1999 ); 23. show ( t3 ); 24. 6 、编程实现抽象类 Employee ,派生类 Manger 和 HourlyWorker ,Employee 有数据成员姓名 name 和工号 ID , Manger 有数据成员 sal ,代表经理的月工资, HourlyWorker 有 wage 和 h

9、ours ,分别代 表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取 所有数据成员的成员函数 ,以及虚函数来计算职员的工资、输出职员的姓名name 和工号 ID 。 1. #include 2. #include 3. using namespace std ; 4. class Employee 5. public : 6. string name ; 7. int id ; 8. virtual int getSal () return 0; 9. Employee (): name( 未命名 ), id ( 0); 10. Employee ()

10、 cout 析构 n ; 11. void set ( string N , int I ) id =I ; name =N; 12. void showSal () 13. 14. cout n 姓名: nameendl 15. 工号: id endl 16. 工资 : getSal () endl ; 17. 18. ; 19. class Manger : public Employee 20. 21. public : 22. Manger ( int S ) sal =S; 23. int getSal () return sal ; 24. int sal ; 25. ; 26.

11、class HourlyWorker : public Employee 27. 28. public : 29. HourlyWorker (int W, int H) wage=W; hours =H; 30. int getSal () return wage * hours ; 31. int wage , hours ; 32. ; 33. void main () 34. 35. HourlyWorker h ( 10, 20); 36. ( 小时工 A, 777); 37. (); 38. Manger m( 999); 39. ( 经理 A, 888); 40. (); 41.

12、 8 、 回答下面问题。 下面列出了由三个文件、和组成的一个程序。文件中实现了主函数;文件中定义了类 MyClass ;文 件中实现了类 MyClass 的成员函数。题中没有给出三个文件的完整实现。仔细阅读所给的程序,根据 题意补充文件和文件的内容。要求: a.将成员变量定义为私有的; b.不要增加题中没有用到的类成员 1. */ 2. / 文件 3. #include 4. #include 5. void main () 6. 7. MyClassobj; 8. cout() endl 9.; 10.cout() endl 11. 12. */ 13. / 文件 14. #include

13、15. float MyClass : GetMember() 16. 17. return member ; 18. 19. void MyClass : SetMember ( float member ) 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. MyClass : member=member; / 在这里写出构造函数的实现函数 MyClass : MyClass ( float in ) Member=in ; /* */ / 文件 / 类 MyClass 的定义 cl

14、ass MyClass / 在下面写出类的定义体 public : MyClass ( float in ) float GetMember(); void SetMember ( float member ); private : float member ; ; 理和作为技术人员业绩工资之和的一半作为业绩工资 salesamanager 类, pay() 函数则是经理的固 10 、某公司雇员 ( employee )包括经理 ( manager ),技术人员 ( technician )和销售员 ( salesman ) 开发部经理( developermanger ),既是经理也是技术人

15、员。销售部经理( salesmanager ),既是经 理也是销售员。 以 employ 类为虚基类派生出 manager , technician 和 salesman 类;再进一步派 生出 developermanager 和 salesmanager 类。 employee 类的属性包括姓名、职工号、工资级别, 月薪(实发基本工资加业绩工资)。操作包括月薪计算函数( pay() ),该函数要求输入请假天数,扣 去应扣工资后,得出实发基本工资。 technician 类派生的属性有每小时附加酬金和当月工作时数,及 研究完成进度系数。业绩工资为三者之积。也包括同名的 pay() 函数, 工资

16、总额为基本工资加业绩工资。 salesman 类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的 pay() 函数,工资总额为基本工资加业绩工资。 manager 类派生属性有固定奖金额和业绩系数,业绩工资 为两者之积。工资总额也为基本工资加业绩工资。 而 developermanager类, pay() 函数是将作为经 编程实现工资管理。特别注意 定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资 pay() 的定义和调用方法:先用同名覆盖,再用运行时多态。 同第 6 题 9、 以点( point )类为基类,重新定义矩形类和圆类。点为直角坐标点,矩形水平放

17、置, 由左下方的 顶点和长宽定义。 圆由圆心和半径定义。 派生类操作判断任一坐标点是在图形内, 还是在图形的边缘上, 还是在图形外。缺省初始化图形退化为点。要求包括拷贝构造函数。编程测试类设计是否正确。 1. #include 2. #include 3. using namespace std ; 4. const double PI =; 5. class Point 6. private : 7. double x , y; 8. public : 9. Point () x = 0; y = 0; 10. Point ( double xv , double yv ) x = xv ;

18、 y = yv ; 11. Point ( Point y = ; 12. double getx () return x ; 13. double gety () return y ; 14. double Area () return 0; 15. void Show() cout x= x y= y endl ; 16. ; 17. class Circle : public Point 18. double radius ; 19. public : 20. Circle () radius = 0; 21. Circle ( double xv, double yv , double

19、 vv): Point (xv,yv) radius = vv; 22. Circle ( Circle / 拷贝构造函数 23. double Area () return PI * radius * radius ; 24. void Show()/ 注意怎样访问基类的数据成员 25. cout x= getx () t y= gety () t radius= radi us endl ; 26. 27. int position ( Point if ( s0) return return 1; else else ; class +( gety ()()*( - radius ; g

20、ety ()(); -1; / 在圆上 / 在圆内 / 在圆外 Rectangle : public Point double width , length ; public : Rectangle Rectangle () width =0; length =0; ( double xv, double yv, double wv, double lv ): Point ( xv,xv) width length = wv ; = lv ; Rectangle width length double Area () void Show() cout x= cout width= ( Rect

21、angle y= gety () t length= length endl ; int position ( Point ; int Rectangle : position ( Point s1 = ()- getx (); s2 =()- gety (); if ( s1=0| s1 =width ) Rectangle rt1 ( 0, 0, 6, 8), rt2 , rt3 (rt1 0; )|( -1; ); Point p1 ( 0, 0), p2(6, 8), p3( 3, 3), p4( 8, 4), (); (); (); s2 =0| s2 =length ) 29. 3

22、0. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 1

23、04. 105. 106. 107. 108. 109. 110. (); cout 点 p1: ; (); cout 矩形 rt3: t ; (); switch ( p1) case 0: cout 在矩形上 endl ; break ; case -1: cout 在矩形内 endl ; break ; case 1: cout 在矩形外 endl ; break ; cout 圆 cc3: t ; (); switch ( p1) case 0: cout 在圆上 endl ; break ; case -1: cout 在圆内 endl ; break ; case 1: cout

24、在圆外 endl ; break ; cout 点 p2: ; (); cout 矩形 rt3: t ; (); switch ( p2) case 0: cout 在矩形上 endl ; break ; case -1: cout 在矩形内 endl ; break ; case 1: cout 在矩形外 endl ; break ; cout 圆 cc3: t ; (); switch ( p2) case 0: cout 在圆上 endl ; break ; case -1: cout 在圆内 endl ; break ; case 1: cout 在圆外 endl ; break ; cout 点 p3: ; (); cout 矩形 rt3: t ; (); switch ( p3 ) case 0: cout 在矩形上 endl ; break ; case - 1: cout 在矩形内 endl ; break ; case 1: cout 在矩形外 endl ; break ; cout 圆 cc3: t ; (); switch ( p3 ) case 0: cout 在圆上 endl ; break ; case - 1: cout 在圆内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论