使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义复数类CComplex的私有成员变量real和imaginary,分别用来表示复数的实部和虚部,都是d

admin2015-05-30  26

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
    (1)定义复数类CComplex的私有成员变量real和imaginary,分别用来表示复数的实部和虚部,都是double类型的变量。请在注释//********1********后添加适当的语句。
    (2)添加复数类CComplex的带一个参数的构造函数,分别将real和imaginary赋值为参数r和0。请在注释//********2********后添加适当的语句。
    (3)完成对运算符“+”的重载,分别对复数的实部和虚部相加。请在注释//********3********后添加适当的语句。
    (4)完成复数的友元函数Equal(CComplex&cl,CComplex&c2)的定义,如果两个数的实部和虚部都相等,则返回1,否则返回0,请在注释//********4********后添加适当的语句。
    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
    1  #include
    2  class CComplex
    3  {
    4   private:
    5    //********1********
    6
    7    public:
    8    CComplex()
    9    {
    10    real=imaginary=0;
    11    }
    12    CComplex(double r)  {
    13    //********2********
    14
    15    }
    16    CComplex operator+(CComplex&c1)  {
    17    //********3********
    18
    19    temp.real=real+c1.real;
    20    temp.imaginary=imaginary+c1.imaginary;
    21    return temp;
    22    }
    23    void Set(int re,int imag)
    24    {
    2 5    real=re ;
    26    imaginary=imag;
    27    }
    28    friend bool Equal(CComplex&cl,CCompiex&c2);
    29    };
    30  bool Equal(CComplex&cl,CComplex&c2)
    31  {
    32    //********4********
    33
    34  }
    35  int main()
    36  {
    37    CComplex complexl(5);
    38    CComplex complex2;
    39    cout<    40    complex2.Set(5,0);
    41    cout<    42    return 0 ;
    43  }

选项

答案(1)添加语句:double real,imaginary; (2)添加语句:real=r; imaginary=0 ; (3)添加语句:CCompiex temp; (4)添加语句:return(c1.real==c2.real)&&(c1.imaginary==c2.imaginary);

解析 程序中定义了类CComplex,含有私有成员变量real和imaginary,分别用来表示复数的实部和虚部,CComplex类有两个构造函数、对运算符“+”的重载、Set(int re,int imag)可改变实部和虚部的值、友元Equal(CComplex&cl,CComplex&c2)函数可判断两个CComplex对象是否相等。
    [解题思路]
    (1)第1个标识下完成定义复数类CComplex的私有成员变量real和imaginary,均为double类型的变量,因此第1个标识下应添加“double real,imaginary;”。
    (2)构造函数CComplex(double r)完成类的初始化,该构造函数有一个参数,分别将real和imaginary赋值为参数r和0,因此第2个标识下应添加“real=r;imaginary=0;”。
    (3)编译程序可知,变量temp没有定义,由operator+(CComplex&c1)函数体的语句可知,temp为函数的返回值,而operator+(CComplex&c1)函数体函数返回CComplex类对象,故在第3个标识下补充temp定义,即“CComplextemp;”。
    (4)即判断两个对象c1和c2的实部和虚部是否均相等,两个逻辑结果相与即可,因此第4个标识下应添加“return(c1.real  == c2.real)&&(c1.imaginary==c2.imaginary);”。
转载请注明原文地址:https://jikaoti.com/ti/7BE0FFFM
0

最新回复(0)