[说明]
下面程序计算正方体、球体和圆柱体的表面积和体积。
[C++程序]
#include<iostream.h>
class container
protected:
double radius;
public:
container(double radius)
container::radius=radius;
(1) ;
(2) ;
;
class cube: (3)
public:
cube(double radius)::container(radius)();
double surface_area()
return radius*radius*6;
double volume()
return radius*radius*radius;
;
class sphere: public container
(4) ;
double surface_area()
return 4*3.1416 *radius*radius;
double volume()
return 3.1416*radius *radius*radius*4/3;
;
class cylinder:public container
double height;
public:
cylinder(double radius, double height):container(radius)
(5) ;
double surface_area()
return 2*3.1416*radius*(height+radius);
double volume()
return 3.1416 *radius*radius*height;
;
void main()
container *p;
cube obj1(5);
sphere obj2 (5);
cylinder obj3(5,5);
p=&obj1;
cout<<"正方体表面积:"<<p->surface_area()<<endl;
cout<<"正方体体积:"<<p->volume()<<endl;
p=&obj2;
cout<<"球体表面积:"<<p->surface_area()<<endl;
cout<<"球体体积:"<<p->volume()<<endl;
p=&obj3;
cout<<"圆柱体表面积:"<<p->surface_area()<<endl;
cout<<"圆柱体体积:"<<p->volume()<<endl;
参考答案:cylinder::height=height
解析: 本题主要考察C++语言程序设计中的几个问题,主要包括纯虚函数,类的派生,初始化。
根据给出的程序,可知,container是一个公共基类,并且它是一个抽象类,在其中定义求表面积和体积的纯虚函数,因为抽象类本身是没有表面积和体积可言的,所以空(1)应该填入virtual double surface_area()=0,空(2)应该填入virtual double volume()=0。空(3)考察类的继承,应填入public container。空(4)考察类的初始化问题,构造函数不能继承,所以,派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象,应填入shpere(double radius):container(radius){}。空(5)考察对成员数据的初始化,由于使用了相同名字的变量名,所以在初始化时,要引入作用于运算符,应填入cylinder::height=height。