用C语言实现的复数运算程序设计
电大理工
3月 Study of Science and Engineering at RTVU. 第1期 总第238期
用C语言实现的复数运算程序设计
王彦良 王 珊
辽阳职业技术学院 ( 辽阳 111000 ) 辽宁师范大学( 大连 116029 )
摘 要 利用C语言提供的自定义结构体类型,自定义了复数结构体类型,在此基础上编写出实现对两个复数进行加、减、乘、除的程序,以及对一个复数求其模(绝对值)的程序。把关于复数类型的定义及相应的函数放到一个新建立的头文件中,可使用预编译命令,方便用户使用。
关键词 C语言 函数 复数 程序设计
众所周知,在C语言中没有提供有关复数运算的程序,这对于需要进行复数运算的用户来说十分不便。而C语言中允许用户自定义结构体类型,为解决用户进行复数运算提供了可能。
我们知道,一个复数z=2+j3是由实部2和一个虚部3构成的,为此,我们可以这样定义一个复数:
typedef struct { double re;
double im; } fcomplex;
结构体类型fcomplex 具有两个元素:一个是实部re,另一个是虚部im,考虑到工程计算中有关复数运算的实、虚部可能是带有小数的情况,我们把实、虚部都定义成双精度实数类型。有了上述对复数fcomplex 结构类型的定义之后,我们可以编制出实现两个复数进行加、减、乘、除的程序,以及对一个复数求其模(绝对值)的程序。
把两个复数z1=a+jb与z2=c+jd相加,其结果z=(a+c)+j(b+d),因此实现两个复数相加的函数如下:
fcomplex fadd( fcomplex z1,fcomplex z2) { fcomplex z;
z.re=z1.re+z2.re; z.im=z1.im+z2.im; return (z); }
把两个复数z1=a+jb与z2=c+jd相减,其结果z=(a-c)+j(b-d),因此实现两个复数相减的函数如下:
fcomplex fsub(fcomplex z1 , fcomplex z2) { fcomplex z; z.re=z1.re-z2.re; z.im=z1.im-z2.im; return (z); }
把两个复数z1=a+jb与z2=c+jd相乘,其结果z=(a+jb)(c+jd)=(ac-bd)+j(ad+bc),因此实现两个复数相乘的函数如下:
fcomplex fmul(fcomplex z1 , fcomplex z2) { fcomplex z;
z.re=(z1.re*z2.re)-(z1.im*z2.im); z.im=(z1.re*z2.im)+(z1.im*z2.re); return (z); }
把两个复数z1=a+jb与z2=c+jd相除,其结果z=(a+jb)/(c+jd)=((ac+bd)+j(bc-ad))/(c*c+d*d),因此实现两个复数相乘的函数如下: