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

下载本文档

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

文档简介

1、文档供参考,可复制、编制,期待您的好评与关注! 1、 设计一个程序: 定义一个圆类,有数据成员半径radis(半径),计算圆的面积和周长,写出主函数测试你编写的类。2、 #include <iostream>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、 vo

2、id main()15、 16、 R r(10);17、 cout<<"半径:10n周长:"<<r.getZC()<<"n面积:"<<r.getMJ();18、 19、2编写一个程序。用名为max的函数模板计算三个参数中的最大值,用整数、字符和浮点数测试所编写的程序。20、 #include <iostream>21、 using namespace std;22、  23、 template <typename O>24、 O Max(O a,O b, O c)retur

3、n a>b?a>c?a:c:b>c?b:c;25、  26、 void main()27、 28、 cout<<Max(9,1,8)<<endl;29、 cout<<Max(7.0,3.2,9.9)<<endl;30、 cout<<Max('a','z','b');31、 32、 设计一个立方体类Box,它能计算并输出立方体的体积和表面积。33、 #include <iostream>34、 using namespace std;35、36、 c

4、lass 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)抽象出一个基类bas

5、e;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。1. #include <iostream>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 bas

6、e17. 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()<

7、;<endl34. <<"n三角:高:10,底:5n面积:"<<a.getMJ()<<endl35. <<"n正方形:边长:10n面积:"<<s.getMJ();36. 5、定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:构造函数重载;成员函数设置缺省参数;定义一个友元函数来打印日期;定义一个非静态成员函数设置日期;可使用不同的构造函数来创建不同的对象。1. include <iostream>2. usi

8、ng 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&

9、amp; in)cout<<in.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,派生类Mange

10、r和HourlyWorker,Employee有数据成员姓名name和工号ID,Manger有数据成员sal,代表经理的月工资,HourlyWorker有wage和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名name和工号ID。1. #include <iostream>2. #include <string>3. using namespace std;4.5. class Employee 6. public:7. string name

11、;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. cout<<"n姓名:"<<name<<endl16. <<"工号:"<<id<<endl17.

12、<<"工资:"<<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 wa

13、ge*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中定义了类MyCl

14、ass;文件MyClass.cpp中实现了类MyClass的成员函数。题中没有给出三个文件的完整实现。仔细阅读所给的程序,根据题意补充文件MyClass.h和文件MyClass.cpp的内容。要求: a.将成员变量定义为私有的;b.不要增加题中没有用到的类成员。 1. /*/2. /文件main.cpp3. #include <iostream.h>4. #include "MyClass.h"5. void main()6. 7. MyClass obj(3.3); 8. cout << obj.GetMember() << endl;

15、 9. obj.SetMember(5.6);10. cout << obj.GetMember() << endl; 11. 12. /*/13. /文件 MyClass.cpp14. #include "MyClass.h"15. float MyClass:GetMember()16. 17. return member;18. 19. void MyClass:SetMember(float member)20. 21. MyClass:member=member;22. 23. /在这里写出构造函数的实现函数24. 25. MyClass:

16、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)和销售员(sal

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

18、同名的pay()函数,工资总额为基本工资加业绩工资。 salesman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。 manager类派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。 而developermanager类,pay()函数是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。 salesamanager类,pay()函数则是经理的固定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资。 编程实现工资管理。特别注意pay()的定义和调用方法:先用同名覆盖,再用运

19、行时多态。同第6 题9、 以点(point)类为基类,重新定义矩形类和圆类。点为直角坐标点,矩形水平放置, 由左下方的顶点和长宽定义。圆由圆心和半径定义。派生类操作判断任一坐标点是在图形内,还是在图形的边缘上,还是在图形外。缺省初始化图形退化为点。要求包括拷贝构造函数。编程测试类设计是否正确。1. #include <iostream>2. #include <cmath>3. using namespace std;4. const double PI=3.1415926535;5. class Point6. private:7. double x,y;8. pub

20、lic: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()cout<<"x="<<x<<' '<<"y="<<y<&

21、lt;endl;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. co

22、ut<<"x="<<getx()<<'t'<<"y="<<gety()<<'t'<<"radius="<<radius<<endl; 26. 27. int position(Point &pt)28. double distance = sqrt(getx()-pt.getx()*(getx()-pt.getx()29. +(gety()-pt.gety()*(gety()-pt.get

23、y();30. double s=distance-radius;31. if(s=0) return 0; /在圆上32. else if(s<0) 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. widt

24、h = 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. cout<<"x="<<getx()<<'t'<<"y="<<gety()<<'t'cout<<&q

25、uot;width="<<width<<'t'<<"length="<<length<<endl;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=

26、0|s2=length)&&s1<=width) return 0; 58. else if(s1<width&&s2<length) 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

27、. 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

28、;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<<"

29、;在圆外"<<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

30、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<<"在圆外"

31、<<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

32、: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

温馨提示

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

评论

0/150

提交评论