请打开考生文件夹下的解决方案文件proj2,其中有类Point(“点”)、Rectangle(“矩形”)和Circle(“圆”)的定义。在程序所使用的平面坐标系统中,x轴的正方向是水平向右的,y轴的正方向是竖直向下的。请在横线处填写适当的代码并删除横线,以

admin2020-04-07  34

问题 请打开考生文件夹下的解决方案文件proj2,其中有类Point(“点”)、Rectangle(“矩形”)和Circle(“圆”)的定义。在程序所使用的平面坐标系统中,x轴的正方向是水平向右的,y轴的正方向是竖直向下的。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应该是:
    --圆形----------
    圆心=(3,2)
    半径=1
    面积=3.14159

    --外切矩形------
    左上角=(2,1)
    右下角=(4,3)
    面积  =4
    注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
    #include  <iostream>
    #include<cmath>
    using namespace std;

    //平面坐标中的点
    //本题坐标系统中,x轴的正方向水平向右,y轴的正方向竖直向下。
    class Point{
    public:
      Point(double x=0.0,double y=0.0):x_(x),y_(y){}
      double getX()const{return x_;}
      double getY()const{return y_;}
      vood setX(double x){x_ =x;}
      void setY(double y){y_ =y;}
    private:
      double x_;  //x坐标
      double y_;  //y坐标
    };

    //矩形
    class Rectangle{
    public:
      Rectangle(Point p,int w,int h)
        :poLnt(p),width(w),height(h){}
      double area()const//矩形面积
     {
      return width * height;
      }
      Point topLeft() const//左上角顶点
     {
      return point;
      }
      Point bottomRight()const
    //右下角顶点(注:y轴正方向竖直向下)
      {
    //**********found**********
      return Point(__________);
      }
    private:
      Point point;//左上角顶点
      double width;//水平边长度
      double he~ght;//垂直边长度
    };
    //圆形
    class Cirole{
    public:
      Circle(Point P,double r):center(p),radius(r){}

      Rectangle  boundingBox  (  )const;
    //外切矩形
      double area()const//圆形面积
      {
    //**********found**********
      return PI *__________;}
    public:
      staric const double PI;//圆周率
    private:
      Point center;  //圆心
      double radius;  //半径
    };
    const double Circle::PI=3.14159;
    Rectangle Circle::boundingBox()corlst
    {
    //********** found **********
       Point pt(___________);
       int w,h;
    //**********found**********
       w=h=____________;
       return Rectangle(pt,w,h);
    }
    int main()
    {
      Point p(3,2);
      Circle c(p,1);
      cout<<"--圆形-----------\n";
      cout<<"圆心=("<<p.getX()  <<’,’<<P.getY()  <<")\n¨;
      cout  <<"半径="  <<1  <<endl;
      cout<<"面积="<<c.area()<<endl<<endl;
      Rectangle bb=c.boundingBox();
      Point t1=bb.topLeft();
      Point br=bb.bottomRight();
      cout<<"--外切矩形-----------\n";
      cout<<"左上角=("<<t1.getX()<<’,’<<t1.getY()<<")\n";
      cout<<"右下角=("<<br.getX()  <<’,’<<br.getY()  <<")\n";
      cout<<"面积="<<bb.area()<<endl;
      return 0;
    }

选项

答案(1)point.getX()+width,point.getY()+height (2)radius * radius (3)center.getX()一radius,center.getY()-radius (4)2 * radius

解析 (1)主要考查考生对成员函数的掌握,程序要求返回右下角顶点,该点的x坐标为左上角顶点的x坐标加上width,该点的y坐标为左上角顶点y坐标加上height,即return Point(point.getX()+width,point.getY()+height);。
    (2)主要考查考生对成员函数的掌握,程序要求计算圆形面积,也就是返回圆面积,即return PI *radius *radius;。
    (3)主要考查考生对成员函数的掌握,首先看函数声明:Rectangle Circle::boundingBox()const,可知该函数要返回的是一个Rectangle类型,即要返回的是圆的外切矩形。再看Rectangle类的构造函数Rectangle(Point P,int w,int h),由此可知,空格处要定义的点pt为左上角点,即Point pt(center.getX()-radius,center.getY()-radius);。
    (4)由函数声明和Rectangle类的构造函数可知,w和h应该为直径,即w=h=2*radius;。
转载请注明原文地址:https://kaotiyun.com/show/2u8p777K
0

最新回复(0)