#include <iostream>
using namespace std;
typedef struct //复数类型
{
float Realpart; //实部
float Imagepart; //虚部
}Complex;
void Create(Complex &C, float x, float y);
float GetReal(Complex C);
float GetImag(Complex C);
Complex Add(Complex C1, Complex C2);
Complex Sub(Complex C1, Complex C2);
void Create(Complex &C, float x, float y)
{
//构造一个复数
C.Realpart = x;
C.Imagepart = y;
}
float GetReal(Complex C)
{
//取复数C=x+yi的实部
return C.Realpart;
}
float GetImag(Complex C)
{
//取复数C=x+yi的虚部
return C.Imagepart;
}
Complex Add(Complex C1, Complex C2)
{ //求两个复数C1和C2的和sum
Complex sum;
sum.Realpart = C1.Realpart + C2.Realpart;
sum.Imagepart = C1.Imagepart + C2.Imagepart;
return sum;
}
Complex Sub(Complex C1, Complex C2)
{
//求两个复数C1和C2的差difference
Complex difference;
difference.Realpart = C1.Realpart - C2.Realpart;
difference.Imagepart = C1.Imagepart - C2.Imagepart;
return difference;
}
// 重载 << 运算符以输出 Complex对象(学习借鉴)
/*<<运算符的重载版本会被调用,它会正确地格式化并输出复数的实部和虚部。*/
ostream& operator<<(ostream& os, const Complex& C)
{
os << "(" << C.Realpart << " + " << C.Imagepart << "i)";
return os;
}
int main()
{
Complex i1, i2, e1;
Create(i1, 3, 5); //3+5i
Create(i2, -3, 6); //-3+6i
cout << "复数i1:" << i1 << " 它的实部:" << GetReal(i1) << endl;
cout << "复数i2:" << i2 << " 它的虚部:" << GetImag(i2) << endl;
cout << "复数i1和i2的和:" << Add(i1, i2) << endl;
cout << "复数i1和i2的差:" << Sub(i1, i2) << endl;
return 0;
}