7-32 复数四则运算 (15分)
题目描述:
本题要求编写程序,计算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。
输入与输出样例:
思路分析:
这道题不怎么难,只考输入格式与输出格式,这道题只是麻烦,1:你要考虑当一个浮点数小于等于0.05,大于等于-0.05,将会当成0来处理。2:这道题可以当虚数为0的时候,排除虚数,只输出实数就行了。3:这道题考虑四则运算去分情况考虑就行了。
代码:
#include<stdio.h>
double lemon(double a,double b)
{
if(b<0)//考虑负数的问题
{
printf("(%.1lf%.1lfi)",a,b);
}
else
printf("(%.1lf+%.1lfi)",a,b);
}
double lemon1(double a,double b)
{
if(a>=-0.05 && a<=0.05 && b>=-0.05 && b<=0.05)//考虑实数与虚数
{
printf("0.0");
}
else if(a>=-0.05 && a<=0.05)//只考虑实数
{
printf("%.1lfi",b);
}
else if(b>=-0.05 && b<=0.05)//只考虑虚数
{
printf("%.1lf",a);
}
else if(b<0)//当虚数小于0,就输出
{
printf("%.1lf%.1lfi",a,b);
}
else
{
printf("%.1lf+%.1lfi",a,b);
}
}
int main()
{
double a,b,c,d,m,n;
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
m=a+c;n=b+d;//加法运算
lemon(a,b);
printf(" + ");
lemon(c,d);
printf(" = ");
lemon1(m,n);
printf("\n");
m=a-c;n=b-d;//减法运算
lemon(a,b);
printf(" - ");
lemon(c,d);
printf(" = ");
lemon1(m,n);
printf("\n");
m=a*c-b*d;n=a*d+b*c;//乘法运算
lemon(a,b);
printf(" * ");
lemon(c,d);
printf(" = ");
lemon1(m,n);
printf("\n");
m=(a*c+b*d)/(c*c+d*d);n=(b*c-a*d)/(c*c+d*d);//除法运算
lemon(a,b);
printf(" / ");
lemon(c,d);
printf(" = ");
lemon1(m,n);
}