数据结构-任意长整数加法

上传人:时间****91 文档编号:121191074 上传时间:2022-07-18 格式:DOC 页数:10 大小:90.50KB
返回 下载 相关 举报
数据结构-任意长整数加法_第1页
第1页 / 共10页
数据结构-任意长整数加法_第2页
第2页 / 共10页
数据结构-任意长整数加法_第3页
第3页 / 共10页
点击查看更多>>
资源描述
数据构造与算法课程设计报告 题目: 任意长整数加法 学期: 春 班号: 学号: 代号 姓名: 代号 成绩: 哈尔滨华德学院电子与信息工程学院年 月 日一、 课程设计的目的与规定(一) 课程设计目的1通过课程设计,加深对数据构造课程所学知识的理解,纯熟掌握和固数据构造的基本知识和语法规范。通过课程设计,巩固和加深对线性表、栈、队列、字符串、查找、排序等理论知识的理解;提高运用计算机分析解决综合性实际问题的基本能力。涉及:数据类型(整形、实型、字符型、指针、数组、构造等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等) ;程序构造(顺序构造、判断选择构造、循环构造)。2库函数应用数据构造与算法课程设计是综合运用课程中学到的几种典型数据构造、常用算法以及程序设计语言,自行实现一种较为完整的应用系统。3学会将理论知识应用于实践的措施,提高分析和解决问题的能力,提高综合能力。(二)题目与规定题目:任意长整数加法规定:1Windows DOS窗口提示顾客输入两个为无限长的整数,当顾客有非法输入符时给出顾客提示并重新输入整数,然后输出两个整数的和,输出形式按照中国人的习惯,每四位一组,组间用逗号隔开。2整形变量范畴是-(215-1)(215-1),读取数据后运用ASCII码的方式转换数据,采用单链表构造方式实现长整数的存储。3. 基于Code Blocks软件建立工程并用C+语言编译 。4:测试数据为:(1) 输入:“0”;“0” 应输出:“ 0”。(2) 输入:“234”;“123” 应输出:“ 357”。(3) 输入:“345”;“345” 应输出:“ 690”。(4) 输入:“19”;“25” 应输出:“ 44”。(5) 输入:“”;“” 应输出:“2,4691.3578。(6) 输入:“8888”;“999” 应输出:“ 8777,7788,8888,8887”。(7) 输入:“4545”;“78787878” 应输出:“ 7879,2424,2424,2424,2423”。二、实践环境配备1. 硬件配备解决器: Intel Core i5 CPU 2.10GHz内存: 8GSSD:120G硬盘:1T2. 软件配备Windows 10 专业版Code Blocks 16三、设计正文1. 需求分析在加法运算中, C +语言所能定义的整形变量是有一定长度限制的。例如 int 型变量所能储存值的值域为 -3276832767,最长的整型 long int 值域为 -。当在需要位数更长的整数加法时计算器设计运用简朴的加法运算符难以达到规定, 或是在两个较大整数相加的值超过了整型变量所能储存的数值是程序会发生溢出。 需要一种新的加法模式来解决上述问题,来实现任意长的整数进行加法,得到想要的成果。本程序目的就是完毕对任意长的整数进行加法运算:1. 系统分析本程序实现计算任意长的整数的加法运算。以顾客和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由顾客在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。功能框图如下3-1所示图3-2 功能框图2. 系统设计本程序中,集合的元素限定为数字字符09和字符,与:,输入字符可以任意长,输入形式以“回车符”为结束标志,串中字符顺序不限,且容许浮现反复字符。运用单链体现实长整数的存储,每个结点含一种整形变量。输入的形式以回车结束,可以直接输入正数或负数。按中国对于长整数的表达习惯,显示数以每四位一组,字符,为分隔符。算法流程如下图3-1所示:图3-2 算法流程图3. 程序系统实现本程序涉及三个模块:1)主程序模块:voidmain()初始化; while(1) 链表创立; 顾客输入数字; 数据存储; 数据解决; 输出成果; 2)集合单元模块实现集合的抽象数据类型。3)结点构造单元模块定义集合的结点构造。函数重要功能的代码如下:函数:Node *creat(Node *head)功能:创立单链表。函数: Node *insert(Node *head)功能:试读取数据,采用头插法和ASCII码技术。将字符转换为与字符相似的数字。函数:void Add(Node *headone,Node *headtwo,Node *headthree)功能:释放内存空间。函数:void destroy(Node *head) 功能:求出两个无限长整数的求和。主函数深度解析:/*主函数*/void main()Node *creat(Node *head); /*声明创立单链表的函数*/Node *insert(Node *head); /*声明读取数据函数*/void Add(Node *headone,Node *headtwo,Node *headthree); /*声明相加函数*/void print(Node *head); /*声明输出函数*/void destroy(Node *head); /*声明释放内存空间函数*/Node *headone; /*被加数的头结点*/Node *headtwo; /*加数的头结点*/Node *headthree; /*和的头结点*/while(1)headone=creat(headone); /*创立单链表,用于储存被加数*/headtwo=creat(headtwo); /*创立单链表,用于储存加数*/headthree=creat(headthree); /*创立单链表,用于储存和*/printf(输入被加数A:);headone=insert(headone); /*读被加数*/if(headone !=NULL) printf(输入被数B:); headtwo=insert(headtwo); /*读取加数*/if(headone !=NULL & headtwo !=NULL) Add(headone,headtwo,headthree); /*求和*/ print(headthree); /*输出和*/ destroy(headthree); /*释放内存空间*/ printf(nnn);4系统测试由Code Block编写datalist.cpp文献,用编译器编译出datalist.o文献,最后连接成可执行文献datalist.exe,如图4-1所示。运营可执行文献datalist.exe浮现DOS界面,根据上文预定测试数据进行测试,查当作果的对的性,效果如图4-2所示。图4-1 编译文献图4-2 测试程序四、小构成员分工阐明独立完毕。五、总结1算法改善设想:(1)在算法效率上,将单链表该为双向循环列表, (2)在功能设立上,编写出简易GUI,在界面中设立有关操作选项。2课程设计期间的重要收获:理论转化到实际应用,看似简朴,实际操作却有多种难点。唯独静下心来,查找有关资料文献,代码一种一种敲进去,运营测试当作果,再修改,再测试,已经不懂得反复多少次才有了目前的满意成果,深知其中尚有诸多处有待改善之处。但愿后来能纯熟掌握大学里的每个知识和技能,灵活运用于实际生活中。在此感谢教师的悉心指引和同窗的协助,才有目前完善的成果。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!