1 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1805条经验 获得超9个赞
#include<iostream>
using namespace std;
class Shape
{
public:
virtual ~Shape();
virtual void draw() const =0;
};
Shape::~Shape()
{
}
class Star : public Shape
{
public:
virtual void draw() const;
};
void Star::draw() const
{
int t,i,j,sp,s;
cout<<"请输入尺寸:";
cin>>s;
cout<<"绘制自选图形:"<<endl;
sp=(2*s-1)/2;
for(i=sp;i>=-sp;i--)
{
t=i>0 ? i : -i;
for(j=0;j<t;j++)
{
cout<<" ";
}
for(j=0;j<2*s-1-2*t;j++)
{
cout<<"*";
}
cout<<endl;
}
}
class Rectangle : public Shape
{
public:
virtual void draw() const;
};
void Rectangle::draw() const
{
int i,j,w,h;
cout<<"请输入 宽 高:";
cin>>w>>h;
cout<<w<<" "<<h<<endl;
cout<<"绘制自选图形:"<<endl;
for(i=h;i>0;i--)
{
for(j=w;j>0;j--)
{
cout<<"*";
}
cout<<endl;
}
}
int main(int argc,char* argv[])
{
int m;
Shape *pt[]={new Star(),new Rectangle()};
while(true)
{
cout<<"1- 星"<<endl<<"2- 矩形"<<endl;
cout<<"选择一种图形或者选0退出:";
cin>>m;
if(0==m)
{
break;
}
else if(1==m || 2==m)
{
pt[m-1]->draw();
}
else
{
cout<<"无法处理的命令!"<<endl;
}
}
delete pt[0];
delete pt[1];
return 0;
}
- 1 回答
- 0 关注
- 685 浏览
添加回答
举报