实现一个复数类,要求重载加减乘除及输入输出,输出保留两位小数。
依次输出加减乘除的结果。
例:
输入:
3 4
7 8
输出 (提示:当虚部不能出现+-yi,--yi等情况)
10.00+12.00i
-4.00-4.00i
-11.00+52.00i
0.47+0.04i
输入:
0 0
5 0
输出 (提示:当虚部为时,可以不输出)
5
-5
0
0
using namespace std; class ComplexNumber { private: double real,imag; public: ComplexNumber(double r=0,double i=0);//构造函数设默认值,或者重载构造函数 ComplexNumber operator +(ComplexNumber &);//注意,这里只需要传一个参数,运算符+重载功能上类似自定义的.add()函数 ComplexNumber operator -(ComplexNumber &); ComplexNumber operator *(ComplexNumber &); ComplexNumber operator /(ComplexNumber &); friend istream& operator>>(istream &in,ComplexNumber &); friend ostream& operator<<(ostream &out,const ComplexNumber &); }; ComplexNumber::ComplexNumber(double r,double i)//类外定义时无需再写默认值 { real=r; imag=i; } ComplexNumber ComplexNumber::operator +(ComplexNumber &z) { ComplexNumber tmp; tmp.real=real+z.real; tmp.imag=imag+z.imag; return tmp; } ComplexNumber ComplexNumber::operator -(ComplexNumber &z) { ComplexNumber tmp; tmp.real=real-z.real; tmp.imag=imag-z.imag; return tmp; } ComplexNumber ComplexNumber::operator *(ComplexNumber &z) { ComplexNumber tmp; tmp.real=real*z.real-imag*z.imag;//这里注意一下运算规则 tmp.imag=real*z.imag+z.real*imag; return tmp; } ComplexNumber ComplexNumber::operator/(ComplexNumber &z) { ComplexNumber tmp; tmp.real=(real*z.real+imag*z.imag)/(z.real*z.real+z.imag*z.imag);//这里可能需要上网查一下怎么计算 tmp.imag=(z.real*imag-real*z.imag)/(z.real*z.real+z.imag*z.imag); return tmp; } istream& operator>>(istream &in,ComplexNumber &z) { in >> z.real >> z.imag;//注意类有两个属性,都要输入 return in; } ostream& operator<<(ostream &out,const ComplexNumber &z) { if(z.imag>0) { out<<fixed<<setprecision(2)<<z.real; out<<"+"<<fixed<<setprecision(2)<<z.imag<<"i"; return out; } else if(z.imag<0) { out<<fixed<<setprecision(2)<<z.real; out<<fixed<<setprecision(2)<<z.imag<<"i"; return out; } else if(z.imag==0) { out<<z.real; return out; } }
//StudybarCommentBegin #include <iostream> #include <iomanip> #include <string> //StudybarCommentEnd
//StudybarCommentBegin void CN() { //ComplexNumber ComplexNumber cn1, cn2; std::cin >> cn1 >> cn2; std::cout<<cn1+cn2 << std::endl; std::cout<<cn1 - cn2 << std::endl; std::cout<<cn1*cn2 << std::endl; std::cout<<cn1 / cn2 << std::endl; } int main(void) { CN(); return 0; } //StudybarCommentEnd
-END