C++題目x答案--精選文檔_第1頁
C++題目x答案--精選文檔_第2頁
免費預(yù)覽已結(jié)束,剩余9頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1、 設(shè)計一個程序: 定義一個圓類,有數(shù)據(jù)成員半徑radis(半徑),計算圓的面積和周長,寫出主函數(shù)測試你編寫的類。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、 void main()15、 16、 R r(10)

2、;17、 cout<<"半徑:10n周長:"<<r.getZC()<<"n面積:"<<r.getMJ();18、 19、2編寫一個程序。用名為max的函數(shù)模板計算三個參數(shù)中的最大值,用整數(shù)、字符和浮點數(shù)測試所編寫的程序。20、 #include <iostream>21、 using namespace std;22、  23、 template <typename O>24、 O Max(O a,O b, O c)return a>b?a>c?a:c:b>

3、;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、 設(shè)計一個立方體類Box,它能計算并輸出立方體的體積和表面積。33、 #include <iostream>34、 using namespace std;35、36、 class Box37、 public:38、 f

4、loat 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)在其中說明一個虛函數(shù)用來求面積;c)利用

5、派生類定義“三角形、正方形、圓形”;d)編寫主函數(shù)并測試。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 base17. public:18. float ge

6、tMJ()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. <<&qu

7、ot;n三角:高:10,底:5n面積:"<<a.getMJ()<<endl35. <<"n正方形:邊長:10n面積:"<<s.getMJ();36. 5、定義一個處理日期的類TDate,它有3個私有數(shù)據(jù)成員:Month,Day,Year和若干個公有成員函數(shù),并實現(xiàn)如下要求:構(gòu)造函數(shù)重載;成員函數(shù)設(shè)置缺省參數(shù);定義一個友元函數(shù)來打印日期;定義一個非靜態(tài)成員函數(shù)設(shè)置日期;可使用不同的構(gòu)造函數(shù)來創(chuàng)建不同的對象。1. include <iostream>2. using namespace std;3.4. cl

8、ass 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)cout<<in.Y

9、ear<<"年"<<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、編程實現(xiàn)抽象類Employee,派生類Manger和HourlyWorker,Employee有

10、數(shù)據(jù)成員姓名name和工號ID,Manger有數(shù)據(jù)成員sal,代表經(jīng)理的月工資,HourlyWorker有wage和hours,分別代表鐘點工的每小時的工資數(shù)和月工作時數(shù),定義的所有類中必須包含構(gòu)造函數(shù)、析構(gòu)函數(shù)、修改和獲取所有數(shù)據(jù)成員的成員函數(shù),以及虛函數(shù)來計算職員的工資、輸出職員的姓名name和工號ID。1. #include <iostream>2. #include <string>3. using namespace std;4.5. class Employee 6. public:7. string name;8. int id;9. virtual in

11、t getSal()return 0;10. Employee():name("未命名"),id(0);11. Employee()cout<<"析構(gòu)n"12. void set(string N,int I)id=I; name=N; 13. void showSal()14. 15. cout<<"n姓名:"<<name<<endl16. <<"工號:"<<id<<endl17. <<"工資:"&

12、lt;<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,ho

13、urs;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("經(jīng)理A",888);44. m.showSal();45. 1. 8、 回答下面問題。下面列出了由三個文件main.cpp、MyClass.h和MyClass.cpp組成的一個程序。文件main.cpp中實現(xiàn)了主函數(shù);文件MyClass.h中定義了類MyClass;文件MyClass.cpp中實現(xiàn)了類My

14、Class的成員函數(shù)。題中沒有給出三個文件的完整實現(xiàn)。仔細閱讀所給的程序,根據(jù)題意補充文件MyClass.h和文件MyClass.cpp的內(nèi)容。要求: 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; 9. obj.SetMember(5.6);1

15、0. 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. /在這里寫出構(gòu)造函數(shù)的實現(xiàn)函數(shù)24. 25. MyClass:MyClass(float in)26. 27.

16、 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)包括經(jīng)理(manager),技術(shù)人員(technician)和銷售員(salesman)。開發(fā)部經(jīng)理(developerma

17、nger),既是經(jīng)理也是技術(shù)人員。銷售部經(jīng)理(salesmanager),既是經(jīng)理也是銷售員。 以employ類為虛基類派生出manager,technician和salesman類;再進一步派生出developermanager和salesmanager類。 employee類的屬性包括姓名、職工號、工資級別,月薪(實發(fā)基本工資加業(yè)績工資)。操作包括月薪計算函數(shù)(pay()),該函數(shù)要求輸入請假天數(shù),扣去應(yīng)扣工資后,得出實發(fā)基本工資。 technician類派生的屬性有每小時附加酬金和當(dāng)月工作時數(shù),及研究完成進度系數(shù)。業(yè)績工資為三者之積。也包括同名的pay()函數(shù),工資總額為基本工資加業(yè)績工

18、資。 salesman類派生的屬性有當(dāng)月銷售額和酬金提取百分比,業(yè)績工資為兩者之積。也包括同名的pay()函數(shù),工資總額為基本工資加業(yè)績工資。 manager類派生屬性有固定獎金額和業(yè)績系數(shù),業(yè)績工資為兩者之積。工資總額也為基本工資加業(yè)績工資。 而developermanager類,pay()函數(shù)是將作為經(jīng)理和作為技術(shù)人員業(yè)績工資之和的一半作為業(yè)績工資。 salesamanager類,pay()函數(shù)則是經(jīng)理的固定獎金額的一半,加上部門總銷售額與提成比例之積,這是業(yè)績工資。 編程實現(xiàn)工資管理。特別注意pay()的定義和調(diào)用方法:先用同名覆蓋,再用運行時多態(tài)。同第6 題9、 以點(point)類為

19、基類,重新定義矩形類和圓類。點為直角坐標(biāo)點,矩形水平放置, 由左下方的頂點和長寬定義。圓由圓心和半徑定義。派生類操作判斷任一坐標(biāo)點是在圖形內(nèi),還是在圖形的邊緣上,還是在圖形外。缺省初始化圖形退化為點。要求包括拷貝構(gòu)造函數(shù)。編程測試類設(shè)計是否正確。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. public:9. Point()x = 0; y =

20、 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<<endl;16. ;17. class C

21、ircle :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; /拷貝構(gòu)造函數(shù)23. double Area()return PI*radius*radius;24. void Show()/注意怎樣訪問基類的數(shù)據(jù)成員25. cout<<"x="

22、<<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.gety();30. double s=distanc

23、e-radius;31. if(s=0) return 0; /在圓上32. else if(s<0) return -1;/在圓內(nèi)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

24、. 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<<"width="<<

25、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=0|s2=length)&&s1

26、<=width) return 0; 58. else if(s1<width&&s2<length) return -1;/0在矩形上,-1在矩形內(nèi)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.Sho

27、w();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<<"在矩形內(nèi)"<<endl;break;76. case 1:cout<<

28、"在矩形外"<<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<<"在圓內(nèi)"<<endl;break;83. case 1:cout<<"在圓外"<<endl;b

29、reak;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<<"在矩形內(nèi)"<<endl;break;92. case 1:cout<<"在矩形外

30、"<<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<<"在圓內(nèi)"<<endl;break;99. case 1:cout<<"在圓外"<<endl;break;100.

31、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<<"在矩形內(nèi)"<<endl;break;108. case 1:cout<<"在矩形外&

32、quot;<<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<<"在圓內(nèi)"<<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.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論