应用题   请使用VC6或使用【答题】菜单打开proj2下的工程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_;}
    void 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)
    : point (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 height;  //垂直边长度
    };
    //圆形
    class Circle {
    public:
    Circle (Point p, double r):center(p), radius(r) {}   
   
    Rectangle boundingBox() const;  //外切矩形
    double area() const  //圆形面积
    {
    // **********found**********
    return PI *______;}
    public:
    static const double PI;  //圆周率
    private:
    Point center;  //圆心
    double radius;  //半径
    };
    const double Circle::PI = 3.14159;
    Rectangle Circle::boundingBox() const
    {
    // **********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 答案考生文件夹
【答案解析】[考点] 本题考查Point类、Rectangle类和Circle类,其中涉及构造函数、const函数和静态成员。 (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;。