问答题
请使用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。