本題要求編寫程序,計算2個復數的和、差、積、商。輸入在一行中按照a1 b1 a2 b2
的格式給出2個復數C1=a1+b1i
和C2=a2+b2i
的實部和虛部。題目保證C2不為0。分別在4行中按照(a1+b1i) 運算符 (a2+b2i) = 結果
的格式順序輸出2個復數的和、差、積、商,數字精確到小數點后1位。如果結果的實部或者虛部為0,則不輸出。如果結果為0,則輸出0.0。
#include<stdio.h>
#include<math.h>
int print(float x,char c,float y);
float a1,b1,a2,b2;
int main()
{
float x,y;
scanf("%f %f %f %f",&a1,&b1,&a2,&b2);
x=a1+a2;
y=b1+b2;
print(x,'+',y);
x=a1-a2;
y=b1-b2;
print(x,'-',y);
x=a1*a2-b1*b2;
y=a1*b2+a2*b1;
print(x,'*',y);
x=(a1*a2+b1*b2)/(a2*a2+b2*b2);
y=(a2*b1-a1*b2)/(a2*a2+b2*b2);
print(x,'/',y);
return 0;
}
int print(float x,char c,float y)
{
if((b1>=0)&&(b2>=0))
printf("(%.1f+%.1fi) %c (%.1f+%.1fi) = ",a1,b1,c,a2,b2);
else if((b1>=0)&&(b2<0))
printf("(%.1f+%.1fi) %c (%.1f%.1fi) = ",a1,b1,c,a2,b2);
else if((b1<0)&&(b2>=0))
printf("(%.1f%.1fi) %c (%.1f+%.1fi) = ",a1,b1,c,a2,b2);
else
printf("(%.1f%.1fi) %c (%.1f%.1fi) = ",a1,b1,c,a2,b2);
if(fabs(x)<0.1&&fabs(y)<0.1)
{
printf("0.0");
}
int flag=0;
if(fabs(x)>=0.1)
{
printf("%.1f",x);
flag=1;
}
if(fabs(y)>=0.1)
{
if(flag&&y>0)
printf("+%.1fi",y);
else
printf("%.1fi",y);
}
printf("\n");
}