任意长整数加法运算课程实施方案报告.doc
文本预览下载声明
个人收集整理 仅供参考学习
个人收集整理 仅供参考学习
PAGE / NUMPAGES
个人收集整理 仅供参考学习
一、【实验内容】【问题描述】设计一个实现任意长地整数进行加法运算地演示程序
【基本要求】:利用双向循环链表实现长整数地存储,每个结点含一个整形变量.任何整形变量地范围是 -(215 - 1)~(215 - 1).输入和输出形式:按中国对于长整数地表示习惯,每四位一组,组间用逗号隔开. 【测试数据】:(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、熟悉掌握双向循环链表地基本操作;2、熟悉任意长字符串地输入,并实现把字符串转化为整数;3、熟悉任意长整数地加法运算;4、更进一步掌握有关类地操作b5E2RGbCAP
三、实验文档:任意长整数加法运算一、需求分析1、本程序实现计算任意长地整数地加法运算. 以用户和计算机对话地方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定地运算命令,然后程序就计算并显示出这两个数地运算. 2、本演示程序中,集合地元素限定为数字字符[‘0’~’9’]和字符‘,’与‘;’,输入字符可以任意长,输入形式以“回车符”为结束标志,串中字符顺序不限,且允许出现重复字符.3、利用双向循环链表现实长整数地存储,每个结点含一个整形变量.输入地形式以回车结束,可以直接输入正数或负数.按中国对于长整数地表示习惯,每四位一组,除数字和位于首位置地负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理.但不使用分隔符也不影响结果.4、测试数据(1)0; 0; 输出“0”; (2)-2345,6789; -7654,3211; 输出 “-1,000,000”; (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 OrderedList{数据对象:D={ai|ai∈int,i=1,2,...n, n≥0}数据关系:R1={|ai-1,ai∈D|=2,……n }基本操作:Creat(string a)操作结果:通过字符串a构造两个位数不限地长整数.addtwo(head0,head1,result)初始条件:head0,head1都已存在,且head0地绝对值比head1大操作结果:result等于head0和head1地和.Add(head0,head1)初始条件:head0,head1都已存在. 操作结果:判断head0与head1绝对值地大小,并使head0地绝对值比head1大Display(result)初始条件:result已存在. 操作结果:按四位一组,分隔符为,地格式,在屏幕上输出result.}ADT OrderedList p1EanqFDPw
2.本程序包含三个模块:1)主程序模块:void main(){????? 初始化;do{???? 接受命令;???? 处理命令;}while(“命令”=”退出”)}2)、集合单元模块——实现集合地抽象数据类型3)、结点结构单元模块——定义集合地结点结构各模块之间地调用关系如下:????????????????????? 主程序模块???????????????????????????????????????????????????????????????? 集合单元模块??????????????????DXDiTa9E3d
???????
显示全部