复数四则运算
本题要求编写程序,计算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");
}