python的复数四则运算代码_复数四则运算源代码

#include&ltstdio.h&gt

#include&ltstdlib.h&gt

typedef struct Complex

{

float real;

float image;

}Complex;

Complex InitComplex(float a,float b) /*给复数的实部和虚部复制,并返回复数。*/

{

Complex c;

c.real=a;

c.image=b;

return c;

}

Complex Add(Complex c1,Complex c2)

{/*两个复数相加。公式:(a+bi)+(c+di)=(a+b)+(c+d)i。*/

Complex sum;

sum.real=c1.real+c2.real ;

sum.image=c1.image+c2.image ;

return sum;

}

Complex Sub(Complex c1,Complex c2)

{/*两个复数相减。公式:(a+bi)-(c+di)=(a-b)+(c-d)i。 */

Complex dif;

dif.real=c1.real-c2.real ;

dif.image=c1.image-c2.image ;

return dif;

}

Complex Mul(Complex c1,Complex c2)

{/*两个复数相乘。公式:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i。 */

Complex product;

product.real=c1.real*c2.real-c1.image*c2.image;

product.image=c1.real*c2.image+c1.image*c2.real;

return product;

}

Complex Div(Complex c1,Complex c2)

{/*两个复数相除,利用分母的共轭复数来通分(i*i=-1)。

公式:(a+bi)/(c+di)=(a+bi)*(c-di)/((c+di)*(c-di))=(a+bi)*(c-di)/(c*c+d*d),其中c+di不等于0。 */

Complex quotient;

quotient.real=0;

quotient.image=0;

if (c2.real&lt1e-38&&c2.image&lt1e-38)

{printf("c2 is 0!error!\n");return quotient;}

quotient.real=

(c1.real*c2.real+c1.image*c2.image)/(c2.real*c2.real+c2.image*c2.image);

quotient.image=

(c1.image*c2.real-c1.real*c2.image)/(c2.real*c2.real+c2.image*c2.image);

return quotient;

}

float GetReal(Complex c)

{/*取复数实部 */

return c.real;

}

float GetImag(Complex c)

{/*取复数虚部 */

return c.image;

}

void Print_C(Complex c)

{/*复数输出*/

if(GetImag(c)==0.0) printf("%5.2f\n",GetReal(c));

else if(GetReal(c)==0.0) printf("%5.2fi\n",GetImag(c));

else printf("%5.2f+%5.2fi\n",GetReal(c),GetImag(c));

}

void main()

{

Complex z1,z2,sum,dif,pro,quo;

float e1,e2;

char sym;

printf("Input the operation symbol(+,-,*,/):");

scanf("%c",&sym);/* ******************提示输入需要进行的四则运算。 */

printf("Input z1 like: 3.0+2.1i or -3.0+-2.1i\nz1=");

scanf("%f+%fi",&e1,&e2);

z1=InitComplex(e1,e2);/* **********提示输入复数z1,并存入变量中。 */

printf("Input z2 like: 3.0+2.1i or -3.0+-2.1i\nz2=");

scanf("%f+%fi",&e1,&e2);

z2=InitComplex(e1,e2);/* ****提示输入复数z2,并存入变量中。 */

switch(sym)

{

case '+': sum=Add(z1,z2);Print_C(sum);break;

case '-': dif=Sub(z1,z2);Print_C(dif);break;

case '*': pro=Mul(z1,z2);Print_C(pro);break;

case '/': quo=Div(z1,z2);Print_C(quo);break;

default: printf("error symbol!!");

/********如果输入了"+、-、*、/"以外的字符,则提示出错。 */

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值