编程小练习

来源:互联网 发布:雅思大作文 知乎 编辑:程序博客网 时间:2024/06/06 03:47

  1. #include<iostream>  
  2. using namespace std;  
  3. //基类  
  4. class CSolid  
  5. {  
  6. public :  
  7.     virtual double area() const=0;//面积  
  8.     virtual double tiji() const=0;//体积  
  9. };  
  10. ///正方体  
  11. class CCube:public CSolid  
  12. {  
  13. private:  
  14.     double chang,kuan,gao;  
  15. public :  
  16.     CCube(double cha,double kua,double ga):chang(cha),kuan(kua),gao(ga){}  
  17.     double area() const;  
  18.     double tiji() const;  
  19. };  
  20.    /******/  
  21. double CCube::area() const  
  22. {  
  23.     return chang*kuan*2+chang*gao*2+kuan*gao*2;  
  24. }  
  25. double CCube::tiji() const  
  26. {  
  27.     return chang*kuan*gao;  
  28. }  
  29.   
  30. ///球体  
  31. class CBall:public CSolid  
  32. {  
  33. private:  
  34.     double banjing;  
  35. public:  
  36.     CBall(double ban):banjing(ban){}  
  37.     double area() const;  
  38.     double tiji() const;  
  39. };  
  40.         /*******/  
  41. double CBall::area() const  
  42. {  
  43.     return 4*3.14159*banjing*banjing;  
  44. }  
  45. double CBall::tiji() const  
  46. {  
  47.     return 4*3.14159*banjing*banjing/3;  
  48. }  
  49.   
  50. ///圆柱体  
  51. class CCylinder:public CSolid  
  52. {  
  53. private:  
  54.     double banjing,gao;  
  55. public:  
  56.     CCylinder(double ban,double ga):banjing(ban),gao(ga){}  
  57.     double area() const ;  
  58.     double tiji() const ;  
  59. };  
  60. double CCylinder::area() const  
  61. {  
  62.     return 3.14159*banjing*banjing*2+2*3.14159*banjing*gao;  
  63. }  
  64. double CCylinder::tiji() const  
  65. {  
  66.     return 3.14159*banjing*banjing*gao;  
  67. }  
  68.   
  69.   
  70.   
  71.   
  72.   
  73.   
  74.   
  75.   
  76.   
  77.   
  78. int main()  
  79. {  
  80.     CCube c1(2.1,2.1,2.1);  
  81.     CBall b1(2.5);  
  82.     CCylinder r1(2.5,3.0);  
  83.     CSolid *pt[3]= {&c1,&b1,&r1}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象  
  84.     cout<<"长方体表面积:"<<pt[0]->area()<<"   长方体体积:"<<pt[0]->tiji()<<endl;  
  85.     cout<<"球体的表面积:"<<pt[1]->area()<<"   球体的体积:"<<pt[1]->tiji()<<endl;  
  86.     cout<<"圆柱的表面积:"<<pt[2]->area()<<"   圆柱的体积:"<<pt[2]->tiji()<<endl;  
  87.   
  88.   
  89.     return 0;  
  90. }  
0 0
原创粉丝点击