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

admin2016-08-19  13

问题 请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2,此丁程包含程序文件main.cpp,其中有类Graphics(“图形”)、Squares(“正方形”)、Diamods(“菱形”)的定义和主函数main的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述定义。例如,当输入数值3时,程序分别输出边长为3的菱形和正方形,即此程序的正确输出结果应为:
    *
    ***
    ****
    ***
    *
    ***
    ***
    ***
    注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动”//**********found**********”。
1  #include
2  {}include
3  using namespace std;
4  class Graphics //图形类
5  {
6   public:
7    Graphics(int e):edges(e)(}
8    //**********found**********
9   ______;
10   protected:
11    int edges;
12    };
13  class Squares:public Graphics//正方形类
14    {
15   public:
16    Squares(int x):Graphics(x){)
17    void Draw();
18    };
19  void Squares::Draw()
20  {
21    int i,j;
22    if(edges<=0)
23    cout<<"errors"<24    if(edges>0)
25    {
26    for(i=0;i27    f
28    for(j=0;J29    cout<30    cout<31    }
32    }
33  }
34  //**********found**********
35   ______ //菱形类
36  {
37  publiC:
38    Diamonds(int x):Graphics(x){}
39    void Draw();
40  };
41  void Diamonds::Draw()
42  {
43    int i,j;
44    if(edges<=0)
45    cout<<"errors"<46    if(edges>0)
47    {
48    for(i=0;i49    {
50    cout<51    //**********found**********
52     _______
53    cout<<’*’;
54    cout<55    }//**********found**********
51  //输出菱形的下半部分
52
53    {
54    cout<55    for(j=0;j<=2*(i-1);j++)
56    cout<<’*’;
57    cout<58    }
59    }
60  }
61  int main()
62  {
63    int e;
64    cout<<"请输入表示边长的整数:";
65    cin>>e;
66    Graphics*objs[2];
67    objs[0]=new Diamonds(e);
68    objs[1]=new Squares(e);
69    for(int i=0;i<2 ; i++)
70    objs->Draw();
71    delete objs[0];
72    delete objs[1];
73    return 0;
74   }

选项

答案(1)virtual void Draw()=0 (2)class Diamonds:public Graphics (3)for(j=0;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+l,因而可以很容易得出结果。   
    (4)菱形的下半部分是由5个*开始递减的,即从最大边递减,直到为0,可以得出答案。
转载请注明原文地址:https://jikaoti.com/ti/v7E0FFFM
0

最新回复(0)