c语言减法头文件,C语言用头文件实现复数加减法

匿名用户

1级

2009-04-24 回答

in cmplx.h

#ifndef CMPLX1_H_

#define CMPLX1_H_

#ifdef __cplusplus

extern "C"

{

#endif

typedef struct _CMPLX

{

float c_real;

float c_vir;

}CMPLX, *PCMPLX;

CMPLX CMPLX_(float real, float vir);

//operations between CMPLX

CMPLX C_add(CMPLX c_l, CMPLX c_r);

CMPLX C_sub(CMPLX c_l, CMPLX c_r);

CMPLX C_mul(CMPLX c_l, CMPLX c_r);

CMPLX C_div(CMPLX c_l, CMPLX c_r);

void C_out(CMPLX data);

#ifdef __cplusplus

}

#endif

#endif /* CMPLX1_H_ */

in cmplx.c

#include

#include

#include "cmplx.h"

CMPLX CMPLX_(float real, float vir)

{

CMPLX d;

d.c_real = real;

d.c_vir = vir;

return d;

}

CMPLX C_add(CMPLX c_l, CMPLX c_r)

{

c_l.c_real += c_r.c_real;

c_l.c_vir += c_r.c_vir;

return c_l;

}

CMPLX C_sub(CMPLX c_l, CMPLX c_r)

{

c_l.c_real -= c_r.c_real;

c_l.c_vir -= c_r.c_vir;

return c_l;

}

CMPLX C_mul(CMPLX c_l, CMPLX c_r)

{

int rl = c_l.c_real;

int vl = c_l.c_vir;

int rr = c_r.c_real;

int vr = c_r.c_vir;

c_l.c_real = rl*rr - vl*vr;

c_l.c_vir = rl*vr + rr*vl;

return c_l;

}

CMPLX C_div(CMPLX c_l, CMPLX c_r)

{

CMPLX c_r_r = CMPLX_(c_r.c_real, -c_r.c_vir);/*a-b*i*/

float c_d = (c_r.c_real*c_r.c_real + c_r.c_vir*c_r.c_vir);

if(c_d == 0)

{

memset(&c_l, 0x00, sizeof(CMPLX));

return c_l;

}

c_l = C_mul(c_l, c_r_r);

c_l.c_real /= c_d;

c_l.c_vir /= c_d;

return c_l;

}

void C_out(CMPLX data)

{

if(data.c_real!=(float)0.0 && data.c_vir!=(float)0.0)

printf("%f%c%fi\n", data.c_real,data.c_vir<0?('-'):('+'), data.c_vir<0?(-data.c_vir):(data.c_vir));

else if(data.c_real == (float)0)

printf("%fi\n", data.c_vir);

else if(data.c_vir == (float)0)

printf("%f\n", data.c_real);

}

in P4.c

#include

#include "cmplx.h"

int test()

{

CMPLX dat1 = CMPLX_(2, 1);

CMPLX dat2 = CMPLX_(1, 1);

CMPLX dat_sum = C_add(dat1, dat2);

CMPLX dat_sub = C_sub(dat1, dat2);

CMPLX dat_mul = C_mul(dat1, dat2);

CMPLX dat_div = C_div(dat1, dat2);

C_out(dat_sum);

C_out(dat_sub);

C_out(dat_mul);

C_out(dat_div);

return 1;

}

int main()

{

test();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值