文档详情

超长正整数加法和乘法报告书.doc

发布:2017-12-16约1.22万字共19页下载文档
文本预览下载声明
信息工程学院 数据结构与C语言综合训练报告 (2011~2012学年第 二学期) 报告题目:____超长正整数的加法________ 姓 名:______李莉_______ 专 业:信息管理与信息系统 年级班级: ____112班________ 指导教师:__李宏利、张晶___ 完成日期:_2012年7月12日 一、综合训练目的和要求 本综合训练是计算机科学与技术、信息管理与信息系统、软件工程、电子商务专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务: 1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C语言、数据结构解决实际问题的能力 二、综合训练任务内容 利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。 提高要求: 完成两个超长正整数的乘法。 三、总体设计 函数调用关系图(如下) 函数的流程图(如下) 四、详细设计说明 主函数模块包括判断函数输入模式是否正确的模块,输入转换模块,数值计算模块和输出模块。在主函数中首先调用函数Input(),然后调用到函数Change(),在Change()函数中调用了函数Sum(),随后主函数中又根据操作者调用了函数Add()或者函数Mul(),最后主函数调用了函数Output()后程序结束。其中, 函数Input()的作用是判断操作者输入的数据格式是否正确,其中参数是字符型的数组; 函数Change()的作用是将字符串分节转变为整型数,并存入链表中。其中,每两个逗号之间的数字字符转化为一个整型数存入一个节点中,每个整型数最多4位。一个链表由多个整型数表示,一个链表表示一个超长正整数。参数是字符型的数组,返回值是节点类型的头节点; 函数Sum()的作用是表示一个以十为底的指数函数。参数是整型,返回值是整型; 函数Add()的作用是计算两个超长正整数的加法。参数是两个节点类型的头节点,返回值是一个节点类型的头节点; 函数Mul()的作用是计算两个超长正整数的乘法。参数是两个节点类型的头节点,返回值是一个节点类型的头节点; 函数Output()的作用是将所得的结果链表输出。参数是一个节点类型的头节点。 五、软件使用说明 第一,现根据提示输入一个字符串形如“**,****,****,****”如图, 第二,若不小心输入的字符串格式不正确,则根据提示进行下一步,如图, 第三,输入Y,重新输入数据。 第四,输入数据,如56,6000; 第五,输入N,继续程序; 第六,输入b,如,12,1265 第七,根据自己情况选择。若需算两数加法则输入0后按下回车键后出结果,若需算两数乘法法输入1后按回车键出结果;如图,计算两数加法: 六、调试与测试 调试方法: 编译链接,debug 测试结果分析: 0与0的加法与乘法 0与任意一个数的乘法: 1326,9543与54,0054,4494的加法与乘法 2,0000,4356与1,0001,0003,9600,5600的加法与乘法 测试过程中遇到的主要问题及采取的措施: 编译链接后出现的错误注意与提示对照解决。如.节点的申请没有与节点类型相照应、 输入分号时用了中文输入法输入等。在编译链接没错之后,输入具体数据进行测试,若有错,则用debug一点一点找出出错点然后进行改正。在用具体数据测试时,发现在乘法中出错居多,有的是没有把情况考虑完全,忘了申请新的节点,后又加上。还有是进入了死循环,后根据出错点,发现是因为限制条件写的不正确,然后根据具体的函数又加了新的限制条件后正确了。在起初编的程序里,乘法函数用的方法很占内存,后又根据老师提示的思路改正了方法,内存得到了很大的节约。
显示全部
相似文档