/*
*程序的版权和版本声明部分:
*Copyright(c)2013,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:尚振伟
*完成日期:2014年5月29日
*版本号:v0.1
*对任务及求解方法的描述部分:
*输入描述:无
*问题描述:
*程序输入:
*程序输出:
*问题分析:
*算法设计:
*我的程序:
*/
#include <iostream>
#include <Cmath>
using namespace std;
class CSolid
{
public:
virtual double area() =0;
virtual double volume() =0;
};
class CCube:public CSolid
{
public:
CCube(double aa):a(aa) {}
double area()
{
return 6*a*a;
}
double volume()
{
return a*a*a;
}
private:
double a;
};
class CCylinder:public CSolid
{
public:
CCylinder(double rr,double h):r(rr),height(h) {}
double area()
{
double a,s;
a=3.14*r*r*2;
s=3.14*2*r*height;
return a+s;
}
double volume()
{
return 3.14*r*r*height;
}
private:
double r;
double height;
};
class Cball:public CSolid
{
public:
Cball(double rr):r(rr) {}
double area()
{
return 4*3.14*r*r;
}
double volume()
{
return 3.14*r*r*r*(4/3);
}
private:
double r;
};
int main()
{
CSolid *p;
CCube C(5);
p=&C;
cout<<"正方体的面积为:"<<p->area()<<endl;
cout<<"正方体的体积为:"<<p->volume()<<endl;
CCylinder cc(7,7);
p=&cc;
cout<<"圆柱体的面积为:"<<p->area()<<endl;
cout<<"圆柱体的体积为:"<<p->volume()<<endl;
Cball cb(2);
p=&cb;
cout<<"球的表面积为:"<<p->area()<<endl;
cout<<"球的体积为:"<<p->volume()<<endl;
return 0;
}
结果展示: