预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验报告:长整数四则运算 实验者:唐怡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.有序表的抽象数据类型定义为: ADTDulinklist{ 数据对象:D={ai|ai为带符号整数,1,2,…,n,n>=0} 数据关系:R1={<ai-1,ai>|ai-1,ai属于集合D,ai-1<ai,i=2,…..,n} 基本操作: 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 }ADTDulinklist 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 longintegar.cpp//主程序 print.cpp