1. 程式人生 > >C++面向物件程式設計50道程式設計題(第14題)

C++面向物件程式設計50道程式設計題(第14題)

C++面向物件程式設計50道程式設計題(第14題)

摘要:C++程式設計實習是為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛鍊學生的分析問題和解決問題的能力,提高學生運用所學知識解決實際問題的能力。
  本專輯為程式設計入門者、高校計算機軟體專業學習或複習提供C++程式設計題庫。
  讀者請先獨立思考哦,再與參考程式進行比對檢查。

一、問題描述

在這裡插入圖片描述

二、考察內容

  基本面向物件概念,理解虛擬函式的定義,並應用整合虛擬函式重寫方法,簡單的數學運算。

三、難度等級

難度等級:★★★☆☆

四、參考程式

#include <iostream.h>
class container{
protected:
	double radius;
public:
	container(double radius)
	{
		container::radius=radius;
	}
	virtual double surface_area()=0;      //純虛擬函式
	virtual double volume()=0;            //純虛擬函式
};
class cube:public container              //定義正方體類
{
public:
	cube(double radius):container(radius){ };
	double surface_area()
	{
		return radius*radius*6;
	}
	double volume()
	{
		return radius*radius*radius;
	}
};
class sphere:public container           //定義球體類
{
public:
	sphere(double radius):container(radius){ };
	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)
	{
		cylinder::height=height;
	}
	double surface_area()
	{
		return 2*3.1416*radius*(height+radius);
	}
	double volume()
	{
		return 3.1416*radius*radius*height;
	}
};
void main()
{
	container *p;             //定義抽象類指標p
	cube obj1(10);            //建立正方體物件obj1
	sphere obj2(6);            //建立球體物件obj2
	cylinder obj3(4,5);        //建立圓柱體物件obj3
	p=&obj1;                  //指標p指向正方體物件obj1
	cout<<"輸出結果:"<<endl;
	cout<<"   正方體表面積:"<<p->surface_area()<<endl;
	cout<<"   正方體體積:  "<<p->volume()<<endl;
	p=&obj2;                   //指標p指向球體物件obj2
	cout<<"   球體的表面積:"<<p->surface_area()<<endl;
	cout<<"   球體的體積:  "<<p->volume()<<endl;
	p=&obj3;                    //指標p指向圓柱體物件obj3
	cout<<"   圓體的表面積:"<<p->surface_area()<<endl;
	cout<<"   圓體的體積:  "<<p->volume()<<endl;
}

五、心得感受

可以在評論處寫下思考和程式設計此題的感受