本题要求编写程序,计算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>
int main(void)
{
double a1,b1,a2,b2,m,n;
scanf("%lf%lf%lf%lf",&a1,&b1,&a2,&b2);
//
m=a1+a2;
n=b1+b2;
if(m>-0.5&&m<0.5&&n>-0.5&&n<0.5)
{
printf("(%.1f+%.1fi) + (%.1f+%.1fi) = 0.0\n",a1,b1,a2,b2);
}
else if(m>-0.5&&m<0.5)
{
printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,n);
}
else if(n>-0.5&&n<0.5)
{
printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,m);
}
else
{
printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f%+.1fi\n",a1,b1,a2,b2,m,n);
}
//减
m=a1-a2;
n=b1-b2;
if(m>-0.5&&m<0.5&&n>-0.5&&n<0.5)
{
printf("(%.1f+%.1fi) - (%.1f+%.1fi) = 0.0\n",a1,b1,a2,b2);
}
else if(m>-0.5&&m<0.5)
{
printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,n);
}
else if(n>-0.5&&n<0.5)
{
printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,m);
}
else
{
printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f%+.1fi\n",a1,b1,a2,b2,m,n);
}
//乘
m=a1*a2-b1*b2;
n=a1*b2+a2*b1;
if(m>-0.5&&m<0.5&&n>-0.5&&n<0.5)
{
printf("(%.1f+%.1fi) * (%.1f+%.1fi) = 0.0\n",a1,b1,a2,b2);
}
else if(m>-0.5&&m<0.5)
{
printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,n);
}
else if(n>-0.5&&n<0.5)
{
printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,m);
}
else
{
printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f%+.1fi\n",a1,b1,a2,b2,m,n);
}
//除
m=(a1*a2+b1*b2)/(b2*b2+a2*a2);
n=(a2*b1-a1*b2)/(b2*b2+a2*a2);
if(m>-0.1&&m<0.1&&n>-0.11&&n<0.1)
{
printf("(%.1f+%.1fi) / (%.1f+%.1fi) = 0.0\n",a1,b1,a2,b2);
}
else if(m>-0.1&&m<0.1)
{
printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1fi\n",a1,b1,a2,b2,n);
}
else if(n>-0.1&&n<0.1)
{
printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f\n",a1,b1,a2,b2,m);
}
else
{
printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f%+.1fi\n",a1,b1,a2,b2,m,n);
}
return 0;
}