复数的加减乘法,和普通的加减乘法有一个区别在于,复数有实部和虚部,虽然进行运算的时候差不多,只需要实部和实部操作,虚部和虚部操作,但是显示的时候就需要考虑到好几种情况了。具体地说有四种情况,1.实部和虚部为0。
2.实部等于0,虚部不等于0。3实部不等于0,虚部等于0. 4.实部和虚部都不等于0.
代码如下
#include<stdio.h>
#include<string.h>
typedef struct MyComplex //构造复数结构的结构体
{
double real; //保存复数的实部
double img; //保存复数的虚部
}mc;
mc Plus(mc a,mc b) //复数的加法操作实现
{
mc result; //声明一个复数结构体变量
result.real=a.real+b.real; //两个复数的实部相加
result.img =a.img+b.img; //两个复数的虚部相加
return result;
}
mc Sub(mc a,mc b) //复数的减法操作实现
{
mc result;
result.real=a.real-b.real;
result.img=a.img-b.img;
return result;
}
mc Multi(mc a,mc b) //复数的乘法操作实现
{
mc result;
result.real=a.real *b.real-a.img*b.img;
result.img=a.img*b.real +b.img*a.real;
return result;
}
void Show(mc a) //复数的显示函数
{
if(a.real==0 &&a.img==0) //如果实部和虚部都为0
printf("0.000\n");
else if(a.real ==0) //如果实部为0
printf("%.4fi\n",a.img);//输出小数点后四位的浮点数
else if(a.img==0) //如果虚部等于0
printf("%.4f\n",a.real);//输出小数点后四位的浮点数
else //如果都不为0
{
if(a.img<0)
printf("%4f%.4fi\n",a.real,a.img);
else
printf("%4.f+%.4fi\n",a.real,a.img);
}
}
int main()
{
mc a,b;
printf("输入第一个复数 a:\n");
scanf("%lf%lf",&a.real,&a.img);
printf("输入第二个复数 b:\n");
scanf("%lf%lf",&b.real,&b.img);
printf("a b 的和为:");
Show(Plus(a,b));
printf("a b 的差为:");
Show(Sub(a,b));
printf("a b的乘为: ");
Show(Multi(a,b));
return 0;
}