输入代码:
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2015年6月13日 *版 本 号:v2.0 * *问题描述: *程序输入:无设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。 设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。 在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。 要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 *程序输出:各立体的表面积和体积 */ #include <iostream> using namespace std; const double PI=3.1415926; // 抽象立体图形基类 class CSolid { public: virtual double Area() const=0; virtual double Volume() const=0; }; // 正方体类 class CCube : public CSolid { public: CCube(double len=0); double Area() const; double Volume() const; private: double length; }; CCube::CCube(double len) { length=len; } double CCube::Area() const { double c; c=6*length*length; return c; } double CCube::Volume() const { double c; c=length*length*length; return c; } // 球体类 class CBall : public CSolid { private: double radius; public: CBall(double r=0); double Area() const; double Volume() const; }; CBall::CBall(double r) { radius=r; } double CBall::Area() const { double c; c=4*PI*radius*radius; return c; } double CBall::Volume() const { double c; c=PI*radius*radius*radius*4/3; return c; } // 圆柱体类 class CCylinder : public CSolid { private: double radius; double height; public: CCylinder(double r=0,double high=0); double Area() const; double Volume() const; }; CCylinder::CCylinder(double r,double high) { radius=r; height=high; } double CCylinder::Area() const { double c; c=2*PI*radius*radius+2*PI*radius*height; return c; } double CCylinder::Volume() const { double c; c=PI*radius*radius*height; return c; } int main( ) { CSolid *p; double s,v; CCube x(30); cout<<"立方体边长为 30 "<<endl; p=&x; s=p->Area( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(4.5); cout<<"球体半径为 4.5 "<<endl; p=&y; s=p->Area( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(10,20); cout<<"圆柱体底面半径、高分别为 10, 20"<<endl; p=&z; s=p->Area( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; return 0; }
原文地址:http://blog.csdn.net/linhaiyun_ytdx/article/details/46481133