1.题目:3.设计一个复数类,并重载+,-,×,/ 和 <<运算符。写完整程序并调试。
2.程序:
#include<iostream.h>
#include<math.h>
class complex
{
public:
complex(){real=0,imag=0;}
complex(double a,double b){real=a;imag=b;}
complex operator+( complex r);
complex operator-( complex r);
complex operator*(complex r);
complex operator/( complex r);
complex operator<<( complex r);
void display();
private:
double real,imag;
};
complex complex::operator+( complex r)
{complex temp;
temp.real=real+r.real;
temp.imag=imag+r.imag;
return temp;
}
complex complex::operator-( complex r)
{
complex temp;
temp.real=real-r.real;
temp.imag=imag-r.imag;
return temp;
}
complex complex::operator*( complex r)
{complex temp;
temp.real=r.real*real-r.imag*imag;
temp.imag=imag*r.real+real*r.imag;
return temp;
}
complex complex::operator/( complex r)
{
complex temp;
temp.real=(real*r.real+imag*r.imag)/(r.real*r.real+r.imag*r.imag);
temp.imag=(r.real*imag-r.imag*real)/(r.real*r.real+r.imag*r.imag);
return temp;
}
complex complex::operator<<( complex r)
{
complex temp;
temp.real=real*(pow(10,r.real));
temp.imag=imag*(pow(10,r.imag));
return temp;
}
void complex::display()
{
cout<<"("<<real<<","<<imag<<")"<<endl;
}
void main()
{
complex a(1,1),b(2,2),c;
c=a+b;
cout<<"a=";a.display();
cout<<"b=";b.display();
cout<<"a+b=";c.display();
c=a-b;cout<<"a-b=";c.display();
c=a*b;cout<<"a*b=";c.display();
c=a/b;cout<<"a/b=";c.display();
c=a<<b;cout<<"a<<b=";c.display();
}
3.结果:

4.问题:
调试中的“*”和“/"运算结果出错了,请问问题出在那里?谢谢了~