来自「C语言相关程序」· 代码 · 共 183 行

TXT
183
字号
#include<iostream.h>

class complex{

  private:

    double real;  //实部

    double imag; //虚部

  public:

    complex(double r = 0.0 ,double i = 0.0 );  //构造函数

    void print();                       //显示复数

    friend complex operator+(const complex &,const complex &); //重载复数"+"

    friend complex operator-(const complex &,const complex &); //重载复数"-"

    friend complex operator*(const complex &,const complex &); //重载复数"*"

    friend complex operator/(const complex &,const complex &); //重载复数"/"

    friend complex &operator+=(complex &,const complex &);     //重载复数"+="

    friend complex &operator-=(complex &,const complex &);     //重载复数"-="

    friend complex &operator*=(complex &,const complex &);     //重载复数"*="

    friend complex &operator/=(complex &,const complex &);     //重载复数"/="

};

complex::complex(double r,double i){

       real=r;

       imag=i;

}

complex operator +(const complex &c1,const complex &c2){     //重载复数"+"

       complex temp;

       temp.real=c1.real+c2.real;

       temp.imag=c1.imag+c2.imag;

       return temp; //返回局部变量,函数声明不可为引用,这时返回了局部变量的地址

}

complex operator -(const complex &c1,const complex &c2){     //重载复数"-"

       complex temp;

       temp.real=c1.real-c2.real;

       temp.imag=c1.imag-c2.imag;

       return temp;

}

complex operator *(const complex &c1,const complex &c2){     //重载复数"*"

       complex temp;

    temp.real=c1.real*c2.real-c1.imag*c2.imag;

    temp.imag=c1.real*c2.imag+c1.imag*c2.real;

       return temp;

}

complex operator /(const complex &c1,const complex &c2){     //重载复数"/"

       complex temp;

    double d;

    d=(c2.real*c2.real+c2.imag*c2.imag);

    temp.real=(c1.real*c2.real+c1.imag*c2.imag)/d;

    temp.imag=(c2.real*c1.imag-c1.real*c2.imag)/d;

       return temp;

}

complex &operator +=(complex &c1,const complex &c2){     //重载复数"+="

       c1.real=c1.real+c2.real;

       c1.imag=c1.imag+c2.imag;

       return c1; //返回由引用参数传递过来的变量,函数声明可为引用

}

complex &operator -=(complex &c1,const complex &c2){     //重载复数"-="

       c1.real=c1.real-c2.real;

       c1.imag=c1.imag-c2.imag;

       return c1;

}

complex &operator *=(complex &c1,const complex &c2){     //重载复数"*="

       complex temp;

    temp.real=c1.real*c2.real-c1.imag*c2.imag;

    temp.imag=c1.real*c2.imag+c1.imag*c2.real;

    c1=temp;

    return c1;

}

complex &operator /=(complex &c1,const complex &c2){     //重载复数"/="

       complex temp;

    double d;

    d=(c2.real*c2.real+c2.imag*c2.imag);

    temp.real=(c1.real*c2.real+c1.imag*c2.imag)/d;

    temp.imag=(c2.real*c1.imag-c1.real*c2.imag)/d;

    c1=temp;

    return c1;

}

 

 

void complex::print(){                       //显示复数

       cout<<real;

       if(imag>=0) cout<<'+';

       cout<<imag<<'i'<<endl;

}

void main()

{
complex v1(1,2),v2(3,-4),v3,v4,v5,v6,v7,v8,v9,v10;
v1.print();
v2.print();
v3=v1+=v2;
v3.print();
v4=v1-=v2;
v4.print();
v5=v1*=v2;
v5.print();
v6=v1/=v2;
v6.print();
v7=v1+v2;
v7.print();
v8=v1-v2;
v8.print();
v9=v1*v2;
v9.print();
v10=v1/v2;
v10.print();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?