题目描述
定义一个复数类,通过重载运算符:+、-、*,实现两个复数之间的各种运算。
要求如下:
1.实现Complex类,私有数据成员实部和虚部,都是int;
2.编写main函数,初始化两个Complex对象,计算它们之间的加减乘,并输出结果。
复数相乘的运算规则
设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i.
输入
第1行:输入两个数值,分别为第一个Complex对象的实部和虚部。
第2行:输入两个数值,分别为第二个Complex对象的实部和虚部。
输出
第1行:两个Complex对象相加后的输出结果。
第2行:两个Complex对象相减后的输出结果。
第3行:两个Complex对象相乘后的输出结果。
//
输入样例:
10 20
50 40
输出样例:
Real=60 Image=60
Real=-40 Image=-20
Real=-300 Image=1400
AC代码:
#include <iostream>
using namespace std;
class complex
{
public:
complex(int x, int y) : real(x), xv(y) {} // 构造函数
// Increase &operator++(); //前增量 , ++*this
// Increase operator++(int); //后增量, *this++
void display();
complex operator+(complex &a)
{
complex j(real, xv);
j.real += a.real;
j.xv += a.xv;
return j;
}
complex operator-(complex &a)
{
complex j(real, xv);
j.real -= a.real;
j.xv -= a.xv;
return j;
}
complex operator*(complex &a)
{
complex j(real, xv);
int s = j.real;
j.real = j.real * a.real - j.xv * a.xv;
j.xv = j.xv * a.real + s * a.xv;
return j;
}
// 输出
private:
int real, xv;
};
void complex::display()
{
cout << "Real=" << real << " ";
cout << "Image=" << xv << endl;
}
// 主函数
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
complex s1(a, b);
complex s2(c, d);
(s1 + s2).display();
(s1 - s2).display();
(s1 * s2).display();
}