// 计算两个复数之积
#include <stdio.h>
#include <math.h>
struct Complex {
double real;
double imag;
};
void Multiply(struct Complex *p, struct Complex c1, struct Complex c2);
void Show(struct Complex c);
int main(void)
{
struct Complex c1,c2,c3;
printf("请输入第一个复数的实部和虚部: ");
scanf("%lf%lf",&c1.real,&c1.imag);
printf("请输入第二个复数的实部和虚部: ");
scanf("%lf%lf",&c2.real,&c2.imag);
Multiply(&c3,c1,c2); //复数相乘
Show(c3); //显示结果
return 0;
}
void Multiply(struct Complex *p, struct Complex c1, struct Complex c2)
{
p->real = c1.real*c2.real-c1.imag*c2.imag;
p->imag = c1.real*c2.imag+c1.imag*c2.real;
}
void Show(struct Complex c)
{
// 实部和虚部均为0
if (fabs(c.real)<1e-4&&fabs(c.imag)<1e-4)
{
printf("两数相乘结果为: 0\n");
}
// 实部为0,虚部不为0
else if (fabs(c.real)<1e-4)
{
printf("两数相乘结果为: %fi\n",c.imag);
}
// 实部不为0,虚部为0
else if (fabs(c.imag)<1e-4)
{
printf("两数相乘结果为: %f\n",c.real);
}
// 实部不为0,虚部大于0
else if (c.imag>0)
{
printf("两数相乘结果为: %f+%fi\n",c.real,c.imag);
}
// 实部不为0,虚部小于0
else
{
printf("两数相乘结果为: %f%fi\n",c.real,c.imag);
}
}