问答题
请使用VC6或使用【答题】菜单打开考生文件夹pmj2下的工程pmj2。其中有类Point(“点”)、lteetangle(“矩形”)和Circle(“圆”)的定义。在程序所使用的平面坐标系统中,x轴的正方向是水平向右的,y轴的正方向是竖直向下的。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应该是: 一一圆形一一一一 圆心=(3,2) 半径=1 面积=3.14159 一一外切矩形一一 左上角=(2,1) 右下角=(4,3) 面积 =4 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found*****”。#include<iostream>#include<cmath>using namespaoe 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<<”一一圆形一一一一一\nn; 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;。