实验一(难度B)优秀报告

上传人:壹****1 文档编号:504956364 上传时间:2023-01-06 格式:DOC 页数:16 大小:349.50KB
返回 下载 相关 举报
实验一(难度B)优秀报告_第1页
第1页 / 共16页
实验一(难度B)优秀报告_第2页
第2页 / 共16页
实验一(难度B)优秀报告_第3页
第3页 / 共16页
实验一(难度B)优秀报告_第4页
第4页 / 共16页
实验一(难度B)优秀报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《实验一(难度B)优秀报告》由会员分享,可在线阅读,更多相关《实验一(难度B)优秀报告(16页珍藏版)》请在金锄头文库上搜索。

1、云南大学软件学院 数据结构实验报告 2010秋季学期 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)学号:20091120094姓名:廖馥璇 专业:信息安全 指导老师:张德海实验难度A B C 承担任务(难度为C时填写)指导教师评分 87 (签名)【实验题目】 实验1. 抽象数据类型.【问题描述】用C或C+语言设计并实现一个可进行复数运算的演示程序。【基本要求】1.由输入的实部和虚部生成一个复数2.两个复数求和3.两个复数求差4.从已知复数中分离出实部和虚部5.复数及相应运算结果以相应的表现形式显示。【实现提示】定义复数为由两个相互之间存在次序关系的实数构成的

2、抽象数据类型,则可以利用实数的操作来实现复数的操作。一、【实验构思(Conceive)】(10%) 9分 1、开发环境:visual c+ 9.02、基本思路:构造复数(为结构体形式)和复数运算的四种函数;设计复数的输入,采用分步输入的方法,确保操作的正确性;让user选择算法,根据算法的选择调用复数运算的函数;输出结果,程序完成。 3、复数的四则运算: 设 z1=a + bi,z2=c + di,(a,b,c,dR,以下不再说明)加减法:(a + bi)(c + di)=(a c )+(b d)i􀁤乘法:(a + bi)*(c + di)=(ac - bd)+(ad + b

3、c)i􀁥除法: 二、【实验设计(Design)】(1520%) 17分(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)1、抽象数据类型cpxNum的定义:ADT cpxNum数据对象:D=c1.real,c1.imag,c2.real,c2.imag,result.real,result.imag| c1.real,c1.imag,c2.real,c2.imag,result.real,result.imag 复数类数据关系:R=,基本操作:cplus(cpxNum c1,cpxNum c2) 初始条件:c

4、1,c2存在。 操作结果:两个复数c1、c2的相加,返回值为cpxNum result。cmilus(cpxNum c1,cpxNum c2)初始条件:c1,c2存在。操作结果:两个复数c1、c2的相减,返回值为cpxNum result。cmultiply(cpxNum c1,cpxNum c2)初始条件:c1,c2存在。操作结果:两个复数c1、c2的相乘,返回值为cpxNum result。cdivide(cpxNum c1,cpxNum c2)初始条件:c1,c2存在。操作结果:两个复数c1、c2的相除,返回值为cpxNum result。ADT cpxNum2、主程序模块:/这部分不需

5、要列出代码,只需说明程序各模块的功能及它们之间的关系即可。#includetypedef struct /定义结构体cpxNum表示“复数”double real; /复数的实部double imag; /复数的虚部cpxNum; 定义4则运算的函数;int main()/声明并初始化3个cpxNum类型的结构体 c1,c2,cresultprintf(输入第一个复数:n);printf(输入实部:);scanf(%lf,&c1.real);printf(输入虚部:);scanf(%lf,&c1.imag);printf(第一个复数的值为:%lf+%lfin,c1.real,c1.imag);

6、 /构造第一个复数/以此种方式构造第二个复数doprintf(请选择一种运算:(输入,2,3或)n);printf(1为加法,为减法,为乘法,4为除法:);scanf(%d,&select);while(select4); /如果输入的数字不是-4之间,则重复输入,直到对为止switch(select) /四则运算,用switch语句实验选择case 1:result=cplus(c1,c2); /调用cplus函数进行运算break;case 2:result=cmilus(c1,c2); /调用cmilus函数进行运算break;case 3:result=cmultiply(c1,c2)

7、; /调用cmultiply函数进行运算break;case 4:result=cdivide(c1,c2); /调用cdivide函数进行运算break;printf(运算的结果是:(%lf)+(%lf)i,result.real,result.imag);return 0;3、各子程序模块的伪码说明:/实现两个复数c1, c2的加法, 和作为函数cplus的返回值cpxNum cplus(cpxNum&c1,cpxNum&c2) cpxNum r;r.real=c1.real+c2.real;r.imag=c2.imag+c2.imag;return (r);/实现两个复数c1, c2的减

8、法, 积作为函数cmultiply的返回值cpxNum cmilus(cpxNum&c1,cpxNum&c2)cpxNum r;r.real=c1.real-c2.real;r.imag=c1.imag-c2.imag;return (r);/实现两个复数c1, c2的乘法, 商作为函数cdivide的返回值cpxNum cmultiply(cpxNum c1,cpxNum c2)cpxNum r;r.real=c1.real*c2.real-c1.imag*c2.imag;r.imag=c1.real*c2.imag+c1.imag*c2.real;return (r);/实现两个复数c1,

9、 c2的除法, 和作为函数cdivide的返回值cpxNum cdivide(cpxNum c1,cpxNum c2) cpxNum r;while(c2.real=0&c2.imag=0)printf(除数不能为,请重新输入除数!n);printf(输入实部:);scanf(%lf,&c2.real);printf(输入虚部:);scanf(%lf,&c2.imag); /若除数为,重新输入除数printf(该复数的值为:%lf+%lfin,c2.real,c2.imag); r.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+

10、c2.imag*c2.imag);r.imag=(c1.imag*c1.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return (r);三、【实现描述(Implement)】(2530%) 26分(本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法、 函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。)/-函数原型说明-Status cplus(cpxNum c1,cpxNum c2)/初始条件:c1,c2存在。 /操作结果:两个复数c1、c2的相加,返回值为cpxNum

11、result。Status cmilus(cpxNum c1,cpxNum c2)/初始条件:c1,c2存在。/操作结果:两个复数c1、c2的相减,返回值为cpxNum result。Statuscmultiply(cpxNum c1,cpxNum c2)/初始条件:c1,c2存在。/操作结果:两个复数c1、c2的相乘,返回值为cpxNum result。Status cdivide(cpxNum c1,cpxNum c2)/初始条件:c1,c2存在。/操作结果:两个复数c1、c2的相除,返回值为cpxNum result。/-关键操作的实现-Status cpxNum()Double rea

12、lDouble imagStatus buildcpxNum(cpxNum&c._real,cpxNum&c._imag)printf(输入实部:);scanf(%lf,&c.real);printf(输入虚部:);scanf(%lf,&c.imag);printf(复数的值为:%lf+%lfin,c.real,c.imag);Status chooseFunc(int select)scanf(%d,&select);switch(select) /四则运算,用switch语句实验选择case 1:result=cplus(c1,c2); /调用运算函数break;case 2:result=cmilus(c1,c2);break;case 3:result=cmultiply(c1,c2);break;case 4:result=cdivide(c1,c2);break;/-程序流程图-/关键算法的时间复杂度=O(1)。四、【测试结果(Testing)】(120%) 9分(本部分应包括:对实验的测试结果,应具体列出每次测试所输入的数据以及输出的数据,并对测试结果进行分析总结) 测试后发现一些常用的数据输入后基本无误,可以进行一些常见的数字运算四、【实验总结】(10%) 9 分(本部分应包括:自己在实验中完成的任务,注意组内的任

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号