使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。 (1)在类定义外完成重载的两个构造函数CP

admin2009-01-15  39

问题 使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。
   (1)在类定义外完成重载的两个构造函数CPosition()和CPosition(double dx,double dy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。请在注释“//**1**”之后添加适当的语句。
   (2)在类体中添加函数move(double ax,double ay)的定义,使得点的坐标x和y分别移动ax和ay个单位,请在注释“// **2**”之后添加适当的语句。
   (3)完成函数double distance (double bx,double by)的定义,该函数返回*this和点(bx,by)的距离,请在注释“//**3**”之后添加适当的语句。
   注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
   源程序文件test11_3.cpp清单如下:
   #include<iostream.h>
   #include<math.h>
   class CPosition
   {
   public:
      CPosition();
      CPosition(double dx,double dy);
      double getx();
      double gety();
          //  **  2  **
      double distance(double bx,double by);
   private:
      double x;
      double y;
   };
   //  **  1  **
   {
     x=0;y=0;
    }
   CPosition::CPosition(double dx,double dy)
   {
   x=dx;y=dy;
   }
   double CPosition::getx()
   {
   return x;
   }
   double CPosition::gety()
   {
   return y;
   }
   double CPosition::distance(double bx,double by)
   {
         //  **  3  **
   }
   void main()
   {
   double a,b;
   cout  <<  "Input  x,  y position of  a point:";
   cin  >>  a  >>  b;
   CPosition psA(a,b);
   cout  <<  “Input x,y position of  another point:";
   cin  >>  a  >>  b;
   cout  << "The  distance  is " <<  psA.distance(a,b)  <<endl;
   }

选项

答案(1) CPosition::CPosition () (2) void move(double ax,double ay){x+=ax;y+=ay;}; (3) return sqrt (pow (x-bx,2)+pow (y-by,2));

解析 本题主要考查考生对于类的定义和重载构造函数的掌握情况。在(3)中使用了基本的数学函数sqrt(x)求x的开方,pow (x, n)函数是求x的n次方。
转载请注明原文地址:https://jikaoti.com/ti/oYkiFFFM
0

最新回复(0)