c语言复数运算 除法,c语言 复数的运算

复数的运算

请用程序实现

用函数编写复数的加法、减法、乘法和除法的运算。

函数定义

// 复数加法

COMPLEX ComplexAdd(const COMPLEX *x, const COMPLEX *y);

// 复数减法

COMPLEX ComplexSub(const COMPLEX *x, const COMPLEX *y);

// 复数乘法

COMPLEX ComplexMul(const COMPLEX *x, const COMPLEX *y);

// 复数除法

COMPLEX ComplexDiv(const COMPLEX *x, const COMPLEX *y);

函数说明

ComplexAdd 将 x 所指复数加上 y 所指复数,函数值为两者相加的和。

ComplexSub 将 x 所指复数减去 y 所指复数,函数值为两者相减的差。

ComplexMul 将 x 所指复数乘以 y 所指复数,函数值为两者相乘的积。

ComplexDiv 将 x 所指复数除以 y 所指复数,函数值为两者相除的商。

要求:当除数为零时,ComplexDiv 函数报告错误,函数值为零。

示例 1

输入

4.2+1.5i

2.5-0.3i

输出

6.7+1.2i

1.7+1.8i

10.95+2.49i

1.58517+0.790221i

示例 2

输入

1.6-3.5i

0+0i

输出

1.6-3.5i

1.6-3.5i

0+0i

Divided by zero!

0+0i

代码如下;

#include

typedef struct

{

double rp;

double ip;

char op;

}COMPLEX;

// 复数加法

COMPLEX ComplexAdd(const COMPLEX *x, const COMPLEX *y)

{

COMPLEX complex;

complex.rp=x->rp+y->rp;

complex.ip=x->ip+y->ip;

if(complex.ip>=0)

complex.op='+';

return complex;

}

// 复数减法

COMPLEX ComplexSub(const COMPLEX *x, const COMPLEX *y)

{

COMPLEX complex;

complex.rp=x->rp-y->rp;

complex.ip=x->ip-y->ip;

if(complex.ip>=0)

complex.op='+';

return complex;

}

// 复数乘法

COMPLEX ComplexMul(const COMPLEX *x, const COMPLEX *y)

{

COMPLEX complex;

complex.rp=x->rp*y->rp+(x->ip*y->ip)*(-1);

complex.ip=x->rp*y->ip+x->ip*y->rp;

if(complex.ip>=0)

complex.op='+';

return complex;

}

// 复数除法

COMPLEX ComplexDiv(const COMPLEX *x, const COMPLEX *y)

{

COMPLEX complex;

if(y->rp==0||y->ip==0)

printf("Divided by zero!");

else

{

complex.rp=(x->rp*y->rp+x->ip*y->ip)/((y->rp)*(y->rp)+(y->ip)*(y->ip));

complex.ip=((x->ip*y->rp)-(x->rp*y->ip))/((y->rp)*(y->rp)+(y->ip)*(y->ip));

if(complex.ip>=0)

complex.op='+';

return complex;

}

}

int main()

{

COMPLEX a, b, p, q, r, s;

ComplexInput(&a);

ComplexInput(&b);

p = ComplexAdd(&a, &b);

ComplexOutput(&p);

putchar('\n');

q = ComplexSub(&a, &b);

ComplexOutput(&q);

putchar('\n');

r = ComplexMul(&a, &b);

ComplexOutput(&r);

putchar('\n');

s = ComplexDiv(&a, &b);

ComplexOutput(&s);

putchar('\n');

return 0;

}

void ComplexInput(COMPLEX *complex)

{

double i,j;

char op;

scanf("%lf%c%lfi",&i,&op,&j);

complex->rp=i;

if(op=='+')

complex->ip=j;

else

complex->ip=-j;

}

void ComplexOutput(const COMPLEX *complex)

{

if(complex->ip>=0)

printf("%g%c%gi",complex->rp,complex->op,complex->ip);

else

printf("%g%gi",complex->rp,complex->ip);

}

如果代码有误,欢迎大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值