定写一个程序义抽象基类shape,由它派生出3个派生类:circle(圆)square(正方形)、rectangle(矩形)

如题所述

第1个回答  2012-12-28
#include<iostream.h>
#include<math.h>
const double PI=3.1415926;
class Shape //几何图形
{
public:
virtual double Circumference()=0; //周长
virtual double Area()=0; //面积
virtual void Show(){};
};
class Circle:public Shape //圆
{
double radius;
public:
Circle(double v){radius=v;}
double Circumference(){return 2.0*PI*radius;}
double Area(){return PI*radius*radius;}
void Show(){cout<<"radius="<<radius<<endl;}
};
class Rectangle:public Shape //矩形
{
double width,length;
public:
Rectangle(){width=0;length=0;}
Rectangle(double wid,double len){width=wid;length=len;}
double Circumference(){return 2.0*(width+length);}
double Area(){return width*length;}
void Show(){cout<<"width="<<width<<"length="<<length<<endl;}
};
class square:public Shape //正方形
{
double a,b,c;
public:
square(double v1 ){a=v1;}
double Circumference(){return 4*a;}
double Area()
{
return a*a;
}
void Show(){cout<<"a="<<a<<endl;}
};

void main()
{
Shape* s1; Shape* s2; Shape* s3;
double r,a1,a2,b1;
cout<<"请输入圆的半径,矩形的长和宽,正方形的边长:"<<endl;
cin>>r; cin>>a1;cin>>a2; cin>>b1;
Circle rr1(r);
Rectangle rr2(a1,a2);
square rr3(b1);
s1=&rr1;
s1->Show();
cout<<"圆的周长="<<s1->Circumference()<<endl;
cout<<"圆的面积="<<s1->Area()<<endl;
s2=&rr2;
s2->Show();
cout<<"矩形的周长="<<s2->Circumference()<<endl;
cout<<"矩形的面积="<<s2->Area()<<endl;
s3=&rr3;
s3->Show();
cout<<"正方形的周长="<<s3->Circumference()<<endl;
cout<<"正方形的面积="<<s3->Area()<<endl;
}
第2个回答  2012-12-27
要求太少了,这样没法知道你要完成什么啊
相似回答