/*2021/3/10*/
#include<stdio.h>
typedef struct{
double a;
double b;
}Complex;
void InitC(Complex &C)
{
scanf("%lf%lf",&C.a,&C.b);
}
Complex mulC(Complex C1,Complex C2)
{
Complex C3;
C3.a=C1.a*C2.a-C1.b*C2.b;
C3.b=C1.a*C2.b+C2.a*C1.b;
return C3;
}
Complex divC(Complex C1,Complex C2)
{
Complex C4;
C4.a=1.0*(C1.a*C2.a+C1.b*C2.b)/(C2.a*C2.a+C2.b*C2.b);
C4.b=1.0*(C1.b*C2.a-C1.a*C2.b)/(C2.a*C2.a+C2.b*C2.b);
return C4;
}
Complex add(Complex C1,Complex C2)
{
Complex C5;
C5.a=C1.a+C2.a;
C5.b=C1.b+C2.b;
return C5;
}
Complex minus(Complex C1,Complex C2)
{
Complex C6;
C6.a=C1.a-C2.a;
C6.b=C1.b-C2.b;
return C6;
}
int main()
{
Complex C1,C2,C3,C4,C5,C6;
printf("結構體實作複數運算的+、-、*、/(縱向輸入)\n");
InitC(C1);
InitC(C2);
/*乘法*/
C3=mulC(C1,C2);
if(C3.b>0)
{
printf("\n乘法:%.2f+%.2fi",C3.a,C3.b);
}
else if(C3.b==0)
{
printf("\n乘法:%.2f",C3.a);
}
else
{
printf("\n乘法:%.2f%.2fi",C3.a,C3.b);
}
/*除法*/
if(C4.a==0.00&&C4.b==0.00)
{
printf("\n除法;0");
}
else
{
C4=divC(C1,C2);
if(C4.b>0)
{
printf("\n除法:%.2f+%.2fi",C4.a,C4.b);
}
else if(C4.b==0)
{
printf("\n除法:%.2f",C4.a);
}
else
{
printf("\n除法:%.2f%.2fi",C4.a,C4.b);
}
}
/*加法*/
C5=add(C1,C2);
if(C5.b>0)
{
printf("\n加法:%.2f+%.2fi",C5.a,C5.b);
}
else if(C5.b==0)
{
printf("\n加法:%.2f",C5.a);
}
else
{
printf("\n加法:%.2f%.2fi",C5.a,C5.b);
}
/*減法 */
C6=minus(C1,C2);
if(C6.b>0)
{
printf("\n減法:%.2f+%.2fi",C6.a,C6.b);
}
else if(C6.b==0)
{
printf("\n減法:%.2f",C6.a);
}
else
{
printf("\n減法:%.2f% .2fi",C6.a,C6.b);
}
return 0;
}