用C语言实现的复数运算程序设计
电大理工20 0 9 年3月S tu d yo fS cien cea n dE n g in e e r in ga tR T V U .第1期总第2 38 期{ ii——一I——辽阳职业技术学院( 辽阳1110 0 0 )I———II用C 语言实现的复数运算程序设计王彦良王珊辽宁师范大学( 大连1160 29 )摘要利用C 语言提供的自定义结构体类型。 自定义了复数结构体类型, 在此基础上编写出实现对两个复数进行加, 减. 乘、 除的程序, 以及对一个复数求其模( 绝对值)的程序. 把关于复数类型的定义及相应的函数放到一个新建立的头文件中, 可使用预编译命令. 方便用户使用..关键词C 语言函数复数程序设计众所周知, 在C 语言中没有提供有关复数运算的程序, 这对于需要进行复数运算的用户来说十分不便。 而C 语言中允许用户自定义结构体类型, 为解决用户进行复数运算提供了可能。我们知道, 一个复数z = 2+ j3是由实部2和一个虚部3构成的, 为此, 我们可以这样定义一个复数:ty p e d e fstr u c t{ d o u b le re;d o u b leim ; )f co m p lex ;结构体类型f co m p lex 具有两个元素: 一个是实部r e, 另一个是虚部im , 考虑到工程计算中有关复数运算的实、 虚部可能是带有小数的情况,我们把实、 虚部都定义成双精度实数类型。
有了上述对复数f co m p lex 结构类型的定义之后, 我们可以编制出实现两个复数进行加、 减、 乘、 除的程序。 以及对一个复数求其模( 绝对值)的程序。把两个复数zl= a + jb与z2= c+ jd 相加, 其结果双a+ cH ( b+ d ), 因此实现两个复数相加的函数如下:f c o m p le xf a d d ( f co m p lexzl, f co m p lexz2){ f co m p lexz;Z . re= z1. re+ z2. re;z. im = z1. im + z2. im ;retu rn( z); }把两个复数z 1= a —b 与z 2= c+ jd 相减, 其结果r《a - c)+ j( b. d ), 因此实现两个复数相减的函数如下:f c o m p le xf su b( f co m p lexz l, f c o m p le xz2){ f co m p lexz;z. re- - z1. re. z2. re;z. im = z1. im ・z2. im ;retu rn( z); }把两个复数zl= a + jb 与z2= c+ jd 相乘。
其结果硝州b)( 州d H ac- bd )+ j( ad + bc), 因此实现两个复数相乘的函数如下:f c o m p le xf m u l( f co m p lexz l, f co m p le xz2){ f co m p lexz;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 )= ( ( a c+ bd )勺( bc. a d ))/( c* c+ d * d )c语言实现复数四则运算, 因此实现两个复数相乘的函数如下:万方数据。 54。瞧犬瑾王总第238 期f c o m p le xf d iv ( f co m p lexz l, f co m p le xz2){ f co m p lexz;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哟;retu rn( z); }对一个复数庐a + jb求其模( 即绝对值), 其结采兔隧一a 2+ b2, 这里要餍翻求平方搬的函数, 事实上在C 语言的“M A T H . H ” 头文件中提供了求平方根的溺数sq rtO , 我们可以在自己酶程序开头, 使用预编译命令: # in clu d e< m a th . h > ,燕接调用冁蜓)丞数。 然两, 在下匿的程序中,我们利用藏代公式‰= 饥+ xly. )/2, 一旦‰l> 懿, 就可以近试计算出‰≈磊。 医必由疆代公式可锝到‰嘿= x/y. , 而多次撼代后Y 州与以十分接近,这样砜嗽嚣弛≈嚣=x/y.-y., 蘑《= x , 麸, 印兢= x , 挟刁‰—韩嚣Z 磙≈嚣丽有虬≈√; 。
d o u b lela bs( f co m p lexz){ d o u b le o ld , n ew ,tem p ;tem p= ( z. re幸z. fe卜( z。 im 霉Z . ira);n ew = ( 1. O + tem p )・O . 5;曲{ o ld = n ew ;n ew 2( o ld + tem p /o ld )・0 . 5;)w h ile( n ew 《o ld );r etu r n ( n ew ); }如果我们把土述关予复数类型的定义及相应的函数放到一个新建立的头文件“f co m . h ” 中,为了实现z=等尝的计算, 这里气=3+j2,≤zl◆z2)z2= 4+ j6, Z 3= 2+ j5, 编制戆主溺数如下:# in c lu d e < std io . h ># in clu d e< f co m . h 》m a in ( ){ f e o m p le xzl= { 3, 2}, 77= { 4, 6}, z3= { 2, 5}, 74z= fd iv( fm u l( fsu b( zl, z2),z3), fa d d ( zl, z2));printf( ” R esult:z= %lf+ j%If镶” , z. fe, 己l黻); ≥参考文献f ll李桂青, 罗持久. 微机C 语言及其应胄1. 托奈: 气象i蠡敝社, 1993.猃l谭洼强. e程序设计. 1基窳: 蔫华大攀出叛社, 1996。
( 上接第52页)行肿l另外墨置≥∥ > 蜒聋, 所以t= Oi= 0翟喁≥彤翟n蕊, 蹦l峨渊< 蹦ln霉》 ,,幂o # o^^又因为萎: 一1。 1n是,矗可得窆薯< - 1< ∑n+ ≮l,进而可确认以九为均值的服从普阿松分布随机数"。参考文献【ll华东师救犬学数学系溉率论与数理统计教稷, 她寨: 岗等教育f lj版社。 1983.【2】 周义仓, 赫孝良. 数学建摸实验. 两安: 西安交通大学出版社。 2002。万方数据用C语言实现的复数运算程序设计作者:王彦良, 王珊作者单位:王彦良(辽阳职业技术学院, 辽阳, 111000) ,王珊(辽宁师范大学, 大连, 116029)刊名:电大理工英文刊名:DIANDA LIGONG年c语言实现复数四则运算, 卷(期) :2009(1) 参考文献(2条)1. 李桂青; 罗持久 微机C语言及其应用 19932. 谭浩强 C程序设计 1996 本文读者也读过(10条)1. 贡正仙. GONG Zheng-xian 在GT4中部署C语言实现的服务[期刊论文]-计算机与现代化2006(9)2. 陈泽宏. 伍晓宇. 任志勇 用C语言实现微分运算精确解[期刊论文]-微型机与应用2001, 20(3)3. 贺堃. HE Kun 一种可靠多播认证方案及其C语言实现[期刊论文]-信息安全与通信保密2007(6)4. 赵秉新 C语言程序设计中基本运算时应注意的问题[期刊论文]-科技信息(科学· 教研) 2007(26)5. 石研. 姚晟 大整数算术运算的实现[期刊论文]-安庆师范学院学报(自然科学版) 2004, 10(2)6. 周亮. ZHOU Liang 浅谈C语言中自增自减运算符的应用[期刊论文]-电脑知识与技术2010, 06(17)7. 刘继清. LIU Ji-qing 中国古代剩余定理的C语言实现[期刊论文]-武汉船舶职业技术学院学报2008, 7(6)8. 黄建琼. HUANG Jian-qiong 巧用C语言中的自增自减运算符[期刊论文]-电脑知识与技术2010, 6(11)9. 刘新 用C++语言实现对口令的混沌加密[期刊论文]-计算机安全2006(10)10. 李澄举 在Visual C++ 6. 0中实现复数四则运算[期刊论文]-嘉应学院学报2001, 19(3) 本文链接: http: //d. g. wanfangdata. com. cn/Periodical_ddlg200901022. aspx
你们死到临头了