#include<stdio.h>
#include<iostream>
using namespace std;
typedef struct //定义复数类型
{
float realPart;
float imagPart;
}Complex;
void InitComplex(Complex &Z)//输入两个复数
{
float x,y;
cout<<"请输入一个复数"<<endl;
cin>>x>>y;
Z.realPart=x;
Z.imagPart=y;
}
void PrintComplex(Complex z)//输出目标复数
{
if(z.imagPart>=0)
cout<<z.realPart<<'+'<<z.imagPart<<'i'<<endl;
else
cout<<z.realPart<<z.imagPart<<'i'<<endl;
}
void Add(Complex z1 ,Complex z2) //求两个复数z1和z2的和sum
{
Complex sum;
sum.realPart=z1.realPart + z2.realPart;
sum.imagPart=z1.imagPart + z2.imagPart ;
PrintComplex(sum);
}
void Sub(Complex z1 ,Complex z2) //求两个复数z1和z2的差dif
{
Complex dif;
dif.realPart = z1.realPart - z2.realPart;
dif.imagPart = z1.imagPart - z2.imagPart;
PrintComplex(dif);
}
void Mcl(Complex z1 ,Complex z2) //求两个复数z1和z2的积mul
{
Complex mul;
mul.realPart = z1.realPart * z2.realPart - z1.imagPart * z2.imagPart;
mul.imagPart = z1.realPart * z2.imagPart + z1.imagPart * z2.realPart;
PrintComplex(mul);
}
void Div(Complex z1 ,Complex z2) //求两个复数z1和z2的商div
{
Complex div;
div.realPart = (z1.realPart * z2.realPart + z1.imagPart * z2.imagPart)/(z2.realPart * z2.realPart + z2.imagPart * z2.imagPart) ;
div.imagPart = (z1.imagPart * z2.realPart - z1.realPart * z2.imagPart)/(z2.realPart * z2.realPart + z2.imagPart * z2.imagPart) ;
PrintComplex(div);
}
int main()
{
Complex z1,z2;
InitComplex(z1);
InitComplex(z2);
char c;
cout<<"请输入您要进行的运算"<<endl;
cin>>c;
switch(c) //判断运算符号
{
case '+':
Add(z1,z2);
break;
case '-':
Sub(z1,z2);
break;
case '*':
Mcl(z1,z2);
break;
case '/':
Div(z1,z2);
break;
}
return 0;
}
1、复数不在基本数据类型中,需要使用typedef声明
2、将加减乘除和复数的生成与输出作为单独的函数引用,确保输出简洁明了
3、输出可以用cout加更多的语言说明来保证输出的可读性