实验报告长整数四则运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告:长整数四则运算
实验者:唐怡04120082 题目:设计一个实现任意长的整数进行加法运算的演示程序
一.需求分析
1.本演示程序中,长整数为任意长的带符号的长整数的输入及求加法后输出的长整数形式为每四位一组,组间用逗号隔开,输入以“回车符”为结束标志。
2.程度执行的命令包括:1)构造整数1,2)构造整数2,3)做加法运算,4)结束3.测试数据
(1)0;0;应输出“0”
(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”
(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”
(4)1,0001,0001;-1,0001,0001;应输出“0”
(5)1,0001,0001;-1,0001,0000;应输出“1”
(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”
(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。
二.概要设计
为实现上述程序功能,应以有序表实现长整数的存储,为此,需要抽象数据类型:有序表
1.有序表的抽象数据类型定义为:
ADT Dulinklist{
数据对象:D={ai|ai为带符号整数,1,2,…,n,n>=0}
数据关系:R1={ 基本操作: InitDulinklist(&) 操作结果:构造一个空的有序表L DestroyDulinklist(&) 初始条件:有序表L已存在 操作结果:销毁有序表L DulinklistLength(L) 初始条件:有序表L已存在 操作结果:返回有序表L的长度 DulinklistEmpty(L) 初始条件:有序表L已存在 操作结果:若有序表L为空表,则返回TUER,否则返回FALSE GetElem(L,pos) 初始条件:有序表L已存在 操作结果:若干1〈=POS〈=LENGTH(L),则返回有序表L中第POS个数据元素。 Append(&L,e) 初始条件:有序表L已存在 操作结果:在有序表L的末尾插入元素e }ADT Dulinklist 3.本程序包含三个模块: 1)主程序模块: 2)有序表单元模块——实现有序表的抽象数据类型; 3)结点结构单元模块——定义有序表的结点结构 各模块之间的调用关系如下: 主程序模块 ↓ 有序表单元模块 ↓ 结点结构单元模块 三.详细设计 1.元素类型,结点类型和指针类型 2.根据有序表的基本操作的特点,有序表采用双向循环链表实现。链表设头,尾两个指针和表长数据域,并附设头结点,头结点的数据域存放长整数的正负标志,用0 表示正,用1表示负 3.主函数和其他函数的程序算法 4.函数的调用关系图反映了演示程序的层次结构: 四.调试分析 1.对C语言指针的用法不清,要调用元素结点的数据是出错, 2.使用了标准输入输出函数,开始时没有把头文件包进去,导致许多函数没有定义3.用回车符作为输入结束的标志,开始时没有将处理回车符,导致程序不对。后调用了函数 4.本程序的模块划分比较合理,且尽可能将指针的操作封装在结点和链表的两个模块中,致使对创建链表函数的调试比较顺利 五.用户手册 1.本程序的运行环境为DOS操作系统,执行文件为: 2.进入演示程序后即显示有提示的用户界面: 3.程序可多次循环直到输入“Q”或”q”,输入结束符为回车符 六.测试结果 (1)输入0和0时输出“0” (2)输入-2345,6789和-7654,3211时输出“-1,0000,0000” (3)输入-9999,9999和1,0000,0000,0000时输出“9999,0000,0001” (4)输入1,0001,0001和-1,0001,0001时输出“0” (5)输入1,0001,0001和-1,0001,0000时输出“1” (6)输入-9999,9999,9999和-9999,9999,9999时输出“-1,9999,9999,9998” (7)输入1,0000,9999,9999和1时输出“1,0001,0000,0000”七.附录 源程序文件名清单: Dulinklist.h //链表的相关函数 print.h //提示信息的输出及运算后链表的输出 Dulinklist.cpp long integar.cpp //主程序 print.cpp