使用VC6打开考生文件夹下的工程test32_3。此工程包含一个test32_3.cpp,其中定义了复数类complex,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义复数类complex的私有数据成员real和image,

admin2010-02-08  50

问题 使用VC6打开考生文件夹下的工程test32_3。此工程包含一个test32_3.cpp,其中定义了复数类complex,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。
   (1)定义复数类complex的私有数据成员real和image,用来分别表示复数的实部和虚部,它们都是double型的数据。请在注释“//**1**”之后添加适当的语句。
   (2)添加复数类complex的带一个参数的构造函数,分别将real和image赋值为参数r的值和0.0,请在注释“//**2**”之后添加适当的语句。
   (3)完成复数类complex的“+”运算符重载成员函数的定义,两个复数相加是将复数的实部和虚部分别进行相加,请在注释“//**3**”之后添加适当的语句。
   (4)完成复数类complex的友元函数isequal(complex *cl,complex *c2)的定义,如果复数c1与c2相等即c1与c2的实部和虚部分别相等,则返回1,否则返回0。请在注释“//**4**”之后添加适当的语句。
   程序输出结果如下:
   36+0i=36+0i
   注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
   源程序文件test32_3.cpp清单如下:
       #include <iostream.h>
       class complex
       {
       public:
        complex(){real=image=O.O;}
        complex(double r)
        {
            //** 2 **
        }
        complex operator+(const complex &c);
        friend bool isequal(complex *c1,complex *c2
        void display();
       };
       complex complex::operator+(const complex &c)
       {
        //** 3 **
        temp.real=real+c.real;
        temp.image=image+c.image;
        return temp;
       }
       bool isequal(complex *c1,complex *c2)
       {
         / /** 4 **
         return 1;
         else
         return 0;
       }
       void complex:: display()
       {
        cout<<real;
        if  (image>=0)  cout<<"+"<<image<<"i";
        else if (image<0) cout<<image<<"i";
       }
       void main()
       {
        complex c1,c2(36.0);
        c1=c1+c2;
        c1.display();
        if (isequal(&c1,&c2)) cout<<"=";
        else  coat<<"<>";
        c2.display();
        cout<<end1;
       }

选项

答案(1) double real,image; (2) real=r; image=0.0; (3) complex temp; (4) if((c1->real==c2->real)&&(c1->image==c2->image))

解析 本题主要考查了类的定义、类构造函数的重载、运算符重载和友元函数等知识点。特别是在重载运算符“+”中临时复数类的申请,相加的两个复数实部与虚部数值的获取,都是需要牢记的,这是运算符重载函数编写的核心所在。
转载请注明原文地址:https://kaotiyun.com/show/z7ID777K
0

最新回复(0)