最新版大整数计算实验报告.docxVIP

  • 13
  • 0
  • 约8.12千字
  • 约 34页
  • 2021-03-08 发布于天津
  • 举报
学院 学院: 信息工程学院 经济学院 实验报告 专业: 计算机科学技术 计算机人论坛.jsjer. 需求分析 1.1开发背景 在现实生活中不可避免地我们会遇到一些超大整数之间的运算, 比如要计算 马云的资产,以及国有银行的转账收入支出等一些数的存储等等类似的问题, 而 由于计算机整形数的最小值和最大值围仅为-32768到32767,所以关于大整数的 实验即呼之欲出,本实验就是针对数值很大、精度很高的大整数进行的加法减法 以及乘法的计算。 1.2数据需求 指针:L1, L2:分别为指向这两条存储要进行运算的链表头结点的指针; L3: 指向乘法的结果链表;L4:在运算乘法的时候做中间量使用。prior :双向链表 的头指针;next :双向链表的尾指针。 data :整形数,链表所存的数据。 1.3功能需求 对一个进行运算的软件,加法和减法是最基本的运算,本实验又额外增加了 大整数的乘法。 1.4测试数据 第一个数:9,568,974,512 ; 第二个数:8,648,761,512 ; 概要设计 2.1功能模块图 由需求分析可画出如下功能模块图 大整数运算 图2-1功能模块图 2.2各功能子程序定义 创建链表: Status creat(DuLi nkList L,char str[30]); 输出链表中结点的数据: Status output(DuL in kList L); 3?加法: DulNode *Add(DuLinkList L1,DuLinkList L2); 4. 减法: DulNode *Sub(DuLinkList L1,DuLinkList L2); 5?乘法: DulNode *Mul(DuLinkList L1,DuLinkList L2); 计算机人论坛.jsjer. 2.3主界面截图 图2-3程序主界面 详细设计 3.1数据结构设计 此款软件是基于线性表双向链表完成的,在每个分过程中都充分利用了链表 指针灵活又不太易于掌控的特性,但若是全面理解指针以及链表的特点,也是很 容易设计此款软件的。 在大整数加减乘法软件中主要有以下几种数据 Status, ElemType 都是宏定义的整形量; DulNode是结构体,包含三个域,data,prior ,next,分别是整形 数,左指针,右指针; 3.2模块详细设计 由于加法和减法的操作易于实现,在此并不一一赘述。 乘法的实现: 构思:本函数又另设一个指针 L3和L4, L3用于存储每一层的乘法 结果,L4则每次都加上L3链表,直至结束,最后L4指向的链表即为乘 法的结果。 一级算法: P1和p2分别指向L1和L2结点的下一个结点 遍历 遍历L1和L2,分别计算两链表的长度 若L2长于L1,则分别交换L1和L2, pl和p2。 新建结点L3和L4, p3和q分别指向L3指向的结点。 Do { 计算L3链表 } 为L3加上头结点;把L3赋给L4; P1重新置于L1尾部,p2前移一位; Do { 重新做一条L3链; Do { 计算L3链 }当 p1-next 为 NULL W指向L3链尾; 把L3加到L4上; }当 p2-prior 为空 返回L4; ⑶ 二级求精: L3-data = 上一位的进位加上L1结点加上L2结点; rfeU^Q□目冃 Mff rfeU^Q□目冃 Mff人大-K出 AiAXAffi 鳶两曲两 Is— 计算Prov ; 新建 L3-prior; 计算L3结点数据; P1前移 计算机人论坛.jsjer. 3.3测试与运行 本程序是用C语言在VisualC++环境编译所完成,经部分数据验证无误,现 将测试与运行结果展示如下: ⑴ 加法: 1 晴输入第二个人樹 64 图3-3-1 加法 (2) 减法和乘法: ress anv key to cont图3-3-2减法和乘法穴穴数教数序 T—机菽菽翟 两两人大大 ress anv key to cont 图3-3-2减法和乘法 穴穴数教数序 T—机菽菽翟 两两人大大出 KA数数数序 两內大大奋 两两 昊大序 测KK大大犬出 S9聾两EE 7 ⑶ 输入: 图3-3-3输入 计算机人论坛.jsjer. 总结与展望 《数据结构》果然不是闹着玩的,要想学好,必须得下苦功夫! !! 参考文献 [1]. [1]. 严蔚敏?数据结构[M].:清华大学,2013 。 计算机人论坛.jsjer. 源代码清单 #in cludestdio.h #in cludestdlib.h #i ncludemax_tou.h Status in put(L in kList p) { Lin kList head,s; int v; int tamp; tamp=0; head=(Li nkList)malloc(siz

文档评论(0)

1亿VIP精品文档

相关文档