问答题 请使用VC6或使用[答题]菜单打开考生目录proj3下的工程文件proj3,该工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示圆形的类MyCircle;程序应当显示: (1,2),5,31.4159,78.5398 但程序中有缺失部分,请按照以下提示,把缺失部分补充完整: (1)在“//**1** ****found****”的下方是构造函数的定义,它用参数提供的圆心和半径分别对cen和rad进行初始化。 (2)在“//**2** ****found****”的下方是非成员函数perimeter的定义,它返回圆的周长。 (3)在“//**3** ****found****”的下方是友元函数area的定义,它返回圆的面积。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。 // proj3.cpp #include <iostream> #include <cmath> using namespace std; class MyPoint { //表示平面坐标系中的点的类 double x; double y; public: MyPoint (double x, double y) {this->x=x; this->y=y;} double getX()const{ return x;} double getY()const{ return y;} void show()const { cout <<'('<<x<<',' <<y<<')';} }; class MyCircle{ //表示圆形的类 MyPoint cen; //圆心 double rad; //半径 public: MyCircle(MyPoint,double); MyPoint center () const { return cen; } //返回圆心 double radius()const{ return fad;} //返回圆半径 friend double area (MyCircle); //返回圆的面积 }; //**1** **********found********** MyCircle::MyCircle(MyPoint p, doubler) : cen(p), ______{} #define PI 3.1415926535 double perimeter(MyCircle c) //返回圆c的周长 {//**2** **********found********** return PI*______; } //**3** **********found********** double area(______) //返回圆a的面积 { return PI* a.rad* a.rad; } int main() { MyCircle c(MyPoint(1, 2), 5.0); c.center().show(); cout <<','<<c.radius() <<','<<perimeter(c) <<','<<area(c)<<endl; return 0; }
【正确答案】(1)rad(r) (2)2*c.radius() (3)MyCircle a
【答案解析】[考点] 本题考查MyPoint类和MyCircle类,其中涉及构造函数、成员函数、const函数和友元函数。 [解析] (1)主要考查考生对构造函数的掌握,使用成员列表初始化给rad赋初始值。 (2)主要考查考生对成员函数的掌握,函数功能为返回圆c的周长。要返回圆的周长,应利用公式PI*2*c.radius()完成。 (3)主要考查考生对成员函数的掌握,因为函数功能为返回圆a的面积,所以函数的形参应该为MyCircle a。