编写程序,计算三角形面积 立方体的体积和表面积 圆的面积和周长

2025-05-23 23:20:26
推荐回答(2个)
回答(1):

分析:依题意,抽象出一个公共基类CContaineer为抽象类,在其中定义求表面积和体积的虚函数(该抽象类本身没有表面积和体积可言)。抽象类中定义一个公共的数据成员radius,此数据可作为球体的半径、正方形的边长、圆柱体底面积圆半径。由此抽象类派生出要描述的三个类,在这三个类中都具有求表面积和体积的重定义版本。
源程序如下:
#include
class CCt //定义抽象类CContaineer
{protected:
float radius; //公共的数据成员radius
double area,volume; //表面积area,体积volume
public:
virtual void Area()=0; //求表面积的纯虚函数
virtual void Volume()=0; //求体积的纯虚函数
CCt (floata,double b,double c){radius=a;area=b;volume=c;} //基类的构造函数
};
class Square:public CCt //派生类Square
{
public:
Square(float a,double b,double c): CCt (a,b,c)
{}
void Area() //虚函数Area()
{area=6*radius*radius;
cout<<"Square's area="< void Volume() //虚函数Volume ()
{volume=radius*radius*radius;
cout<<" Square's volume="<class circle:public CCt //派生类circle
{
public:
circle(float a,double b,double c): CCt (a,b,c)
{} //派生类circle构造函数
void Area()
{area=4*3.14*radius*radius;
cout<<"circle's area="< void Volume()
{volume=3.14*radius*radius*radius*4/3;
cout<<" circle's volume="<class CCt linder:public CCt
//派生类CCt linder
{float high;
public:
CCt linder(float h,float r,double a,double v): CCt (r,a,v)
{high=h;}
void Area() //派生类CCtlinder的虚函数定义
{area=2*3.14*radius*radius+2*3.14*radius*high;
cout<<" CCt linder's area="< void Volume()
{ volume=3.14*radius*radius*high;
cout<<" CCt 's volume="<void Areafun(CCt *p)//根据p所指向的对象不同,调用 不同的派生类Area
{p->Area();}
void Volumefun(CCt *p) //根据p所指向的对象不同,调用不同的派生类Volume
{p->Volume();}
void main()
{Square r1(5,0,0);// Square的对象r1
circle c1(8,0,0); // circle的对象c1
CCt linder cc2(2,14,0,0); // CCt linde的对象cc2
Areafun(&r1);//调用的将是派生类Square的Area虚函数
Volumefun(&r1);// 调用的将是派生类Square的Volume虚函数
Areafun(&c1);
Volumefun(&c1);
Areafun(&cc2);
Volumefun(&cc2);
}

回答(2):

你还没说 用哪种语言呢 c还是java