使用VC6打开考生文件夹下的源程序文件modi3.cpp,通过把类Distance定义为类Point的友元类,来实现计算两点之间距离的功能。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)把类CDistance定义为类CPoi

admin2021-05-06  47

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp,通过把类Distance定义为类Point的友元类,来实现计算两点之间距离的功能。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
    (1)把类CDistance定义为类CPoint的友元类。请在注释//********1********之后添加适当的语句。
    (2)定义类CPoint的构造函数,完成给私有数据成员x和y的赋值,并且两个参数的缺省值都为0。请在注释//********2********之后添加适当的语句。
    (3)完成类CDistance的成员函数length(Point&pPoint,Point&qPoint)~定义,并在其中计算点p、q之间的距离,并且返回结果。假设两点之间的距离distance=sqrt((pPoint.x - qPomt.x)*(pPoint.x - qPoint.x)+(pPoint.y -qPoint.y)*(pPoint.y - qPoint.y))。请在注释//********3********之后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
    1    #include
    2  #include
    3  using namespace std;
    4  class CPoint
    5  {
    6 public:
    7    //********1********
    8  
    9    //定义类Point的构造函数
    10    //********2********
    11
    12    void display()  {  cout<<"x="<    13 private:
    14    float x,y;
    15    };
    16  class CDistance
    17  {
    18 public:
    19    float length(CPoint&p,CPoint&q);
    20  };
    21  float CDi stance::length(CPoint&pPoint,CPoint&qPoint)
    22    {
    213    //********3********
    24
    25  }
    26  int main()
    27  {
    28    CPoint mPoint(10,10),nPoint(10,10);
    29    mPoint.display();
    30    nPoint.display();
    31    CDistance len;
    32    cout<    33    return 0;
    34  }

选项

答案(1)添加语句:friend C1ass CDistance ; (2)添加语句:CPoint(float a=0,float b=0){x=a;y=b;) (3)添加语句:return sqrt((pPoint.x—qPoint.x)*(pPoint.x—qPoint.x)+(pPoint.y—qPoint.y)*(pPoint.y—qPoint.y));

解析 程序当中定义了类CPoint和CDistance,CPoint类含有成员变量x和y,display()函数输出x和y的值;类CDistance只有成员函数length(CPoint&p,CPoint&q),且类CDistance为类CPoint的友元类。
    [解题思路]
    (1)第1个标识下补充定义类CDistance为类CPoint的友元类,声明友元类的格式为:friend<类名>;,故第1个标识下应添加“friend class CDistance;”。
    (2)类CPoint的构造函数完成给私有数据成员x和y的初始化,两个参数的缺省值都为0,因此参数含有默认值0,故第2个标识下应添加“CPoint(float a=O,floatb=0){x=a;y=b;}”。
    (3)类CDistance的成员函数length(CPoint&pPoint,CPoint&qPoint)返回点P、q之间的距离,可由公式distance=sqrt((pPoint.X-qPoint.X)*(pPoint.X-qPoint.x)+(pPoint.Y-qPoint.y)*(pPoint.y-qPoint.y))计算求得,第3个标识下应添加“return  sqrt((pPoint.x-qPoint.x)*(pPoint.X-qPoint.x)+(pPoint.y-qPoint.y)*(pPoint.Y-qPoint.y));”。
转载请注明原文地址:https://kaotiyun.com/show/oJfp777K
0

最新回复(0)