请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2,此工程包含程序文件main.cpp,其中有类Graphics(“图形”)、Squares(“正方形”)、Diamods(“菱形”)的定义和主函数main的定义。请在程序中的横线处填写

admin2016-06-12  61

问题 请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2,此工程包含程序文件main.cpp,其中有类Graphics(“图形”)、Squares(“正方形”)、Diamods(“菱形”)的定义和主函数main的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述定义。例如,当输入数值3时,程序分别输出边长为3的菱形和正方形,即此程序的正确输出结果应为:
*
***
*****
***
*
***
***
***
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动”//**********found**********
#inflnclude<10stream>
#include
using namespace std;
class Graphics//图形类
{
public:
  Graphics(int e):edges(e){)
  //**********found**********
  ——;
protected:
int edges;
};
class Squares:public Graphics//正方形类
{
public:
  Squares(int x):Graphics(x){)
  void Draw();
},
void Squares::Draw()
{
int i,j;
if(edges<=0)
cout<<“errors”<  if(edges>0)
  {
for(i=0;i{
for(j=0;jcout<cout<}
}
}
//**********found**********
//菱形类
  {
  public:
  Diamonds(int X):Graphics(x){)
void Draw();
};
void Diamonds::Draw()
{
int i,j;
if(edges<=0)
cout<<“errors”<if(edges>0)
{
for(i=0;i{
cout<//**********found**********
cout<<‘*’;
cout<}
//**********found**********
  //输出菱形的下半部分
{
cout<for(j=0;j<=2*(i一1);j++)
cout<<‘*’;
cout<}
}
}
int main()
{
int e;
cout<<"请输入表示边长的整数:;
cin>>e;
Graphics*objs[2];
objS[0]=new Diamonds(e);
objS[1]=new Squares(e);
for(int i=0;i<2;i++’)
obJ S一>Draw();
delete objS[0];
delete,jobjS[1],
return 0;
}

选项

答案(1)virtual void Draw()=0 (2)class Diamonds:public Graphics (3)for(j=O;j<2,* i+1;j++) (4)for(i=edges;i>0;i一一)

解析 主要考查类的纯虚函数的使用,类的公有继承,以及简单图形的构造。
【解题思路】
(1)由于Graphic的子类都使用了Draw()成员函数,并且都有自己各自不同的实现,很容易发现类中成员多态的特性,类的多态是使用虚函数来实现的。
(2)Diamonds的成员函数Draw()中使用了edges。但是类Diamonds中没有该成员,而Graphic中有此成员,可知该类公有继承了Graphic。
(3)根据图形的变化可知第一行1个*,第二行3个*,第三行5个*,增长的规律是2*i+1,因而可以很容易得出结果。
(4)菱形的下半部分是由5个木开始递减的,即从最大边递减,直到为0,可以得出答案。
转载请注明原文地址:https://kaotiyun.com/show/tYNp777K
0

最新回复(0)