/*计算球、圆柱和圆锥的表面积和体积*/
#include<iostream>
#include<math.h>
using namespace std;
const double PI=3.1415926;
class Circle //圆类
{
protected:
double r;
public:
Circle(double radius=0):r(radius){}
double Area()
{
return PI*r*r; //计算圆的面积
}
double Volume()
{
return 0; //计算圆的体积
}
};
class Sphere:public Circle //球体类
{
public:
Sphere(double radius=0):Circle(radius){}
double Area() //计算球的表面积
{
return 4*PI*r*r;//返回表达式可以用4*Circle::Area()来代替
}
double Volume() //计算球的体积
{
return 4*PI*pow(r,3)/3; //pow(r,3)求出r的立方值
}
};
class Cylinder:public Circle //圆柱体类
{
double h; //高度
public:
Cylinder(double radius=0,double height=0):Circle(radius)
{
h=height;
}
double Area() //计算圆柱体的表面积
{
return 2*PI*r*r*h;
}
double Volume()//计算圆柱体的体积
{
return PI*r*r*h;//返回表达式可以用Circle::Area()*h来代替
}
};
class Cone:public Circle //圆锥体类
{
double h;//高度
public:
Cone(double radius=0,double height=0):Circle(radius)
{
h=height;
}
double Area() //计算圆锥体的表面积
{
double l=sqrt(h*h+r*r);//sqrt函数救出参数值的平方根
return PI*r*(r+1);
}
double Volume()//计算圆锥体的体积
{
return PI*r*r*h/3;
}
};
void main()
{
Circle r1(2);
Sphere r2(2);
Cylinder r3(2,3);
Cone r4(2,3);
cout<<"Circle: "<<r1.Area()<<' '<<r1.Volume()<<endl;
cout<<"Sphere: "<<r2.Area()<<' '<<r2.Volume()<<endl;
cout<<"Cylinder: "<<r3.Area()<<' '<<r3.Volume()<<endl;
cout<<"Cone: "<<r4.Area()<<' '<<r4.Volume()<<endl;
}