打开考生文件夹下的解决方案文件proj2,此项目包含程序文件main.cpp,其中有类Graphics(“图形”)、IsocelesTriangles(“等腰三角形”)、Parallelogram(“平行四边形”)的定义和主函数main的定义。请在程序中的

admin2020-04-10  30

问题 打开考生文件夹下的解决方案文件proj2,此项目包含程序文件main.cpp,其中有类Graphics(“图形”)、IsocelesTriangles(“等腰三角形”)、Parallelogram(“平行四边形”)的定义和主函数main的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述定义。
    此程序的正确输出结果应为:
            *
           ***
          *****
         *******
        *********
       ***********

          ******
         ******
        ******
       ******
      ******
     ******
    注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//*****found*****”。
      #include<iostream>
      #include<iomanip>
      using namespace std;
      class Graphics//图形类
      {
      public:
        Graphics(int e):edges(e){}
        //*******found*******
         _____________
      protected:
        int edges;
      };
      class IsocelesTriangles:public Graphics//等腰三角形类
      {
      public:
          IsocelesTriangles(int x): Graphics(x){}
          void Draw();
      };
      void IsocelesTriangles::Draw()
      {
          int i,j;
          if(edges<=0)
          cout<<"errors"<<end;
          if(edges>0)
          {
            for(i=0;i<edges;i++)
           {
              for(j=0;j<edges—i;j++)
                cout<<setw(2)<<’ ’;
             //*****found*****
           for(j=0;___________;j++)//输出每行的*号
            cout<<setw(2)<<’*’;
                cout<<endl;
            }
        }
           cout<<endl;
      }
      //*********found*********
      ____________//平行四边形类
      {
      public:
        Parallelogram(int x):Graphics(x){)
           void Draw();
      };
      void Parallelogram::Draw()
      {
        int i,j;
        if(edges<=0)
           cout<<"errors"<<endl;
        if(edges>0)
        {
          for(i=0;i<edges;i++)
           {
              //*****found*****
              for(j=0;____________;j++)//输出前导空格
                 cout<<setw(2)<<’ ’;
              for(j=0; j<edges;j++)
                 cout<<setw(2)<<’*’;
                 cout<<endl;
              }
           }
         cout<<endl;
      }
      int main()
      {
           Graphics * objs[2];
          objs[0]=new IsocelesTriangles(6);
          objs[1]=new Parallelogram(6);
          for(int i=0; i<2;i++)
               objs一>Draw();
          delete objs[0];
          delete objs[1];
           return 0;
      }

选项

答案(1)virtual void Draw()=0; (2)j<2*i+1 (3)class Parallelogram:public Graphics (4)j<edges—i一1

解析 题意中,Graphics是基类,IsocelesTriangles和Parallelogram是Graphics的派生类。main函数中定义成员Graphics指针类型的数组objs,它包含两个元素,分别是IsocelesTriangles和Parallelogram对象的地址,所以在for循环中,通过Graphics指针调用虚函数Draw。
    (1)由于程序中没有给出Graphics的成员函数Draw的定义,所以需要定义为纯虚函数。
    (2)根据输出可知,等腰三角形的Draw中,每行先输出空格,后输出*,每行的空格数量为edges—i,*号的数量为行号的2倍加1,即2*i+1。
    (3)平行四边形和等腰三角形一样,公有继承于Graphics。
    (4)从题意输出可知,平行四边形的Draw函数也是先输出空格,后输出*,其中每行前导空格的数量分别为5,4,3,2,1,0,*的数量为edges个,所以程序填空为:j<edges—i一1
转载请注明原文地址:https://kaotiyun.com/show/Xu8p777K
0

最新回复(0)