⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ep4_8_2.cpp

📁 这里有大量的c语言习题呢!真的是题海哦
💻 CPP
字号:
#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 &);     //重载复数"/="
    friend complex operator++(complex &);              //重载复数前缀"++"
    friend complex operator++(complex &,int);           //重载复数后缀"++"
};
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;
}
complex operator ++(complex & c){     //重载复数前缀"++"
	++c.real;
	++c.imag;
	return c;
}
complex operator ++(complex & c,int){     //重载复数后缀"++"
	complex temp(c.real,c.imag);
	c.real++;
	c.imag++;
	return temp;
}
void complex::print(){                       //显示复数
	cout<<real;
	if(imag>=0) cout<<'+';
	cout<<imag<<'i'<<endl;
}

int main(){
	complex A(30,40),B(15,30),C,D;  //定义4个复数对象
	cout<<"A为:";
	A.print();
	C=operator++(A,1);//即C=A++完整的表达式
	cout<<"C=A++后,C为:";
	C.print();
	cout<<"A为:";
	A.print();
	C=operator++(A);//即++A
	cout<<"C=++A后,C为:";
	C.print();
	cout<<"A为:";
	A.print();
	C=A*B;
	cout<<"C=A*B后,C为:";
	C.print();
	A*=B;
	cout<<"A*=B后,A为:";
	A.print();
	C=A/B;
	cout<<"C=A/B后,C为:";
	C.print();
	A/=B;
	cout<<"A/=B后,A为: ";
	A.print();
	cout<<"B为:";
	B.print();
	D=A+B+C;
	cout<<"D=A+B+C后,D为:";
	D.print();
	A+=B+=C;
	cout<<"A+=B+=C后,A为:";
	A.print();
	cout<<"B为:";
	B.print();
	D=A-B-C;
	cout<<"D=A-B-C后,D为:";
	D.print();
	A-=B+=C;
	cout<<"A-=B+=C后,A为:";
	A.print();
	cout<<"B为:";
	B.print();
	A=B;
	cout<<"A=B后,A为:";
	A.print();
	D=A*B*C;
	cout<<"D=A*B*C后,D为:";
	D.print();
	D=D/B/C;
	cout<<"D=D/B/C后,D为:";
	D.print();
	A*=B*=C;
	cout<<"A*=B*=C后,A为:";
	A.print();
	A/=B/=C/=C;
	cout<<"A/=B/=C/=C后,A为:";
	A.print();
	return 0;
}

⌨️ 快捷键说明

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