复数运算的演示程序.doc_第1页
复数运算的演示程序.doc_第2页
复数运算的演示程序.doc_第3页
复数运算的演示程序.doc_第4页
复数运算的演示程序.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复数运算的演示程序【实验题目】 实验1. 抽象数据类型.【问题描述】用C或C+语言设计并实现一个可进行复数运算的演示程序。【基本要求】1.由输入的实部和虚部生成一个复数2.两个复数求和3.两个复数求差4.两个复数求积【实现提示】定义复数为由两个相互之间存在次序关系的实数构成的抽象数据类型,则可以利用实数的操作来实现复数的操作。(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四)一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)复数由实部和虚部构成,可以通过一个含有两个元素的结构体来实现复数的表示,并且通过接受用户的输入,可以实现复数的生成。对于复数的四则运算,可以编写四个函数,通过函数的调用来实现相应的运算。加减法:(a + bi)(c + di)=(a c )+(b d)i乘法:(a + bi)*(c + di)=(ac - bd)+(ad + bc)i除法: 二、【实验设计(Design)】(15%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)功能:能够显示和构造复数,并且能进行复数的加减乘除运算。主程序模块:void main() float a,b,c,d; fushu f1,f2,plu,min,mul; printf(请按实部虚部的顺序依次输入两个复数:); scanf(%f%f%f%f,&a,&b,&c,&d); getfushu (f1,a,b); /*调用getfushu函数,构造复数f1*/ getfushu (f2,c,d); /*调用getfushu函数,构造复数f2*/ printf(n您输入的第一个复数是:); printfushu (f1); printf(n您输入的第二个复数是:); printfushu (f2); plusfushu (plu,f1,f2); /*调用plusfushu函数,使复数f1,f2相加*/ printf(n相加结果为:); printfushu (plu); minusfushu (min,f1,f2); /*调用minuscomplex函数,使复数f1,f2相减*/ printf(n相减结果为:); printfushu (min); multifushu (mul,f1,f2); /*调用multifushu函数,使f1,f2相乘*/ printf(n相乘结果为:); printfushu (mul); printf(n);子程序模块:void getfushu (fushu& f,float a,float b); /*构造复数*/void plusfushu (fushu& plu, fushu f1, fushu f2); /*实现复数的相加*/void minusfushu (fushu& min, fushu f1, fushu f2); /*实现复数的相减*/void multifushu (fushu& mul, fushu f1, fushu f2); /*实现复数的相乘*/void printfushu (fushu f); /*显示复数*/三、【实现描述(Implement)】(25%)(本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法、 函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。)void getfushu (fushu& f,float a,float b);通过接受两个数据来构造一个复数f,其中a为复数的实部,b为复数的虚部。void plusfushu (fushu& plu, fushu f1, fushu f2);接收两个复数,并对其进行加法运算,将运算结果保存在plu里。void minusfushu (fushu& min, fushu f1, fushu f2);对复数f1,f2进行减法运算,并将运算结果保存在min里。void multifushu (fushu& mul, fushu f1, fushu f2);对复数f1,f2进行乘法运算,并将运算结果保存在mul里。void printfushu (fushu f);将复数f显示出来。四、【测试结果(Testing)】(20%)(本部分应包括:对实验的测试结果,应具体列出每次测试所输入的数据以及输出的数据,并对测试结果进行分析总结)测试一:输入的两个复数分别为3.1和4.22+8.9i,其操作及显示结果如下请按实部虚部的顺序依次输入两个复数:3.1 0 4.22 8.9您输入的第一个复数是:3.100000您输入的第二个复数是:4.220000+8.900000i相加结果为:7.320000+8.900000i相减结果为:-1.120000-8.900000i相乘结果为:13.081999+27.589998i测试二:输入的两个复数分别为9.7i和-2.1-9.7i,其操作及显示结果如下请按实部虚部的顺序依次输入两个复数:0 9.7 -2.1 -9.7您输入的第一个复数是:+9.700000i您输入的第二个复数是:-2.100000-9.700000i相加结果为:-2.100000相减结果为:2.100000+19.400000i相乘结果为:94.089996-20.369999i四、【实验总结】(10%)(本部分应包括:自己在实验中完成的任务,注意组内的任意一位同学都必须独立完成至少一项接口的实现;对所完成实验的经验总结、心得)实验总结、心得:经过这次实验,发现模块化编程能够使得程序变得简练,清晰,便于读者阅读,利于自己改进。实验中,从复数的构造,到加减乘的运算,再到结果的输出都是通过函数来实现的。另一方面,在这次实验中发现自己对基本知识的掌握还是不牢固,运行程序时出现了好多错误,后面又通过仔细的观察,才找出了错误的地方。这次实验,让我复习了C的使用方法,并熟练掌握了结构体的定义和使用。这次实验还让我对抽象数据类型的含义有了更深的了解。五、【项目运作描述(Operate)】(10%)(本部分应包括:项目的成本效益分析,应用效果等的分析。)该项目投入了较多的时间,进行了多次修改,效益方面还可以,能进行简单的复数四则运算。应用效果上还不尽人如意,程序简单,界面也相当简陋,进行一些不合理的输入时,得不到理想的回应,缺乏人性化设计,在用户提示上有所欠缺。六、【代码】(10%)(本部分应包括:完整的代码及充分的注释。 注意纸质的实验报告无需包括此部分。格式统一为,字体: Georgia , 行距: 固定行距12,字号: 小五)#include#includetypedef struct float real; float imag; fushu;void getfushu(fushu& f,float a,float b);void plusfushu(fushu& plu,fushu f1, fushu f2);void minusfushu(fushu& min,fushu f1, fushu f2);void multifushu(fushu& mul,fushu f1, fushu f2);void printfushu(fushu f);void getfushu(fushu& f,float a,float b)f.real=a; f.imag=b;void plusfushu(fushu& plu,fushu f1,fushu f2)plu.real=f1.real+f2.real; plu.imag=f1.imag+f2.imag;void minusfushu(fushu& min,fushu f1,fushu f2)min.real=f1.real-f2.real; min.imag=f1.imag-f2.imag;void multifushu(fushu& mul,fushu f1,fushu f2)mul.real=(f1.real*f2.real)-(f1.imag*f2.imag); mul.imag=(f1.real*f2.imag)+(f1.imag*f2.real);void printfushu(fushu f)if (f.real!=0) printf(%lf,f.real); if (f.imag0) printf(+); printf(%lfi,f.imag); else if(f.imag0) printf(%lfi,f.imag); void main() float a,b,c,d; fushu f1,f2,plu,min,mul; printf(请按实部虚部的顺序依次输入两个复数:); scanf(%f%f%f%f,&a,&b,&c,&d); getfushu(f1,a,b); getfushu(f2,c,d); printf(n您输入的第一个复数是:); printfushu(f1); printf(n您输入的第二个复数是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论