电大理工
2009年3月 StudyofScienceandEngineeringatRTVU. 第1期总第238期
{ii——一I——I———II用C语言实现的复数运算程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
王彦良 王珊
辽阳职业技术学院(辽阳111000)辽宁师范大学(大连116029)
摘要 利用C语言提供的自定义结构体类型。自定义了复数结构体类型,在此基础上编写出实
现对两个复数进行加,减.乘、除的程序,以及对一个复数求其模(绝对值)的程序.把关于复数类型
的定义及相应的函数放到一个新建立的头文件中,可使用预编译命令.方便用户使用. .
关键词 C语言函数复数程序设计
众所周知,在C语言中没有提供有关复数
运算的程序,这对于需要进行复数运算的用户来
说十分不便。而C语言中允许用户自定义结构
体类型,为解决用户进行复数运算提供了可能。
我们知道,一个复数z=2+j3是由实部2和
一个虚部3构成的,为此,我们可以这样定义一
个复数:
typedefstruct
{doublere;
doubleim;)fcomplex;
结构体类型fcomplex具有两个元素:一个是实
部re,另一个是虚部im,考虑到工程计算中有
关复数运算的实、虚部可能是带有小数的情况,
我们把实、虚部都定义成双精度实数类型。有了
上述对复数fcomplex结构类型的定义之后,我
们可以编制出实现两个复数进行加、减、乘、除
的程序。以及对一个复数求其模(绝对值)的程
序。
把两个复数zl=a+jb与z2=c+jd相加,其结
果双a+cH(b+d),因此实现两个复数相加的函数
如下:
fcomplexfadd(fcomplexzl,fcomplexz2)
{fcomplexz;
Z.re=z1.re+z2.re;
z.im=z1.im+z2.im;
return(z);}
把两个复数z1=a—b与z2=c+jd相减,其结
果r《a-c)+j(b.d),因此实现两个复数相减的函数
如下:
fcomplexfsub(fcomplexzl,fcomplexz2)
{fcomplexz;
z.re--z1.re.z2.re;
z.im=z1.im·z2.im;
return(z);}
把两个复数zl=a+jb与z2=c+jd相乘。其结
果硝州b)(州dHac-bd)+j(ad+bc),因此实现两
个复数相乘的函数如下:
fcomplexfmul(fcomplexzl,fcomplexz2)
{fcomplexz;
z.re=(z1.re·z2.re)·(z1.im·z2.ira);
z.im=(z1.re·z2.im)+(z1.im木z2.re);
return(z);,
把两个复数zl=a+jb与z2=c+jd相除。其结
果爿a+jb)/(c+jd)=((ac+bd)勺(bc.ad))/
(c*c+d*d),因此实现两个复数相乘的函数如
下:
万方数据
。54。 瞧犬瑾王 总第238期
fcomplexfdiv(fcomplexzl,fcomplexz2)
{fcomplexz;
z。re=((zl。re·z2.rO+(z1.im·垃-im))/(z2.re幸
瘦.re+岔.1m搴z2。ira);
z.im=((z1.im·z2.re).(z1.re·z2.im))/
(z2.re幸z2.豫÷-艺.im搴舵。i哟;
return(z);}
对一个复数庐a+jb求其模(即绝对值),其
结采兔隧一a2+b2,这里要餍翻求平方搬的
函数,事实上在C语言的“MATH.H”头文件中
提供了求平方根的溺数sqrtO,我们可以在自己酶
程序开头,使用预编译命令:#include