资源描述:
《课程设计格式文库》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、信息科学与技术学院《数据结构》课程设计报告题目名称:长整数四则运算专业班级:信息管理与信息系统3班学生姓名:汪昌盛学生学号:20151008180指导教师:完成日期:2016年6月26S一、需求分析二、概要设计三、详细设计错误!未定义书签。错误!未定义书签。错误!未定义书签。四.调试分析及心得体会错误!未定义书签。五、用户手册六.测试结果错误!未定义书签。错误!未定义书签。—、需求分析1.本程序实现计算任意长的整数的四则运算.以用户和计算机对话的方式,先后输入数字的最多位数,然后程序就计算并显示出这两个数的运算。2.利用双向循环链表现实长整数的存储,每个结点
2、含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数,程序会过滤掉无效的字符。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理。但不使用分隔符也不影响结果。3.测试数据(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,000
3、1,0001;输出“1”;(6)-9999,9999,9999;-9999,9999,9999;输出“-1,9999,9999,9998”;(7)1,0000,9999,9999;1;输出"1,0001,0000,0000".二、概要设计为实现上述程序功能,应以双向循环链表表示长整数。为此,需要定义一个抽象数据类型。1.抽象数据类型定义为:ADTOrderedList{2.数据对象:D二{ailaiGint,i二1,2,...n,n20}基本操作:init(&a,digit4)操作结果:构造一个位数是digit4*4长整数。pass(&a,&b,&c)初始条
4、件:a,b,c都已存在操作结果:c等于a和b的和。nep(&a)初始条件:a已存在。操作结果:a变为输入参数的相反数。printIong(&a)初始条件:a已存在。操作结果:按四位一组,分隔符为",〃的格式,在屏幕上输出a。ston(&S,&a)初始条件:a已存在。操作结果:把字符串形式的长数字赋给不}ADTOrderedListtypedefstructDuCiLinkNodeLongIntNode,*LongInt;//采用双向循环链表为实际的存储结构voidOutputNumber(LongInta);//输出一个长整型数voidInputNumber
5、(LongInta,intOneOrTwo);//输入一个长整型数voidadd(LongIntc,LongInta,LongIntb);//长整型数c二a+bvoidsub(LongIntc,LongInta,LongIntb);//长整型数c二a-bStatusmuI(LongIntc,LongInta,LongIntb);//长整型数c=a*bvoiddiv(LongIntc,LongInta,LongIntb);//长整型数c=a/b(整除)voidrem(LongIntc,LongInta,LongIntb);//长整型数c=a%b(求余)void
6、power(LongIntc,LongInta,intn);//长整型数c=a'n(乘方)2.本程序包含两个模块:1)主程序模块:Voidmain(){选择操作:助法法法法出帮加减乘除退打印结果;三、详细设计1•元素类型,结点类型,指针类型#defineNULL0#incIude#incIude#incIudetypedefstructIongnode{/*每个节点的结构*/intnum;/*数字*/structIongnode*Iowl;/*指向低一位节点*/structIongnode*high1;
7、/*指向高一位节点*/}longnode;typedefstructxlong{/*每个长整数的结构*/Iongnode*High;/*每个长整数的最高节点*/Iongnode*Low;/*每个长整数的最低节点*/intdigit4;/*每个长整数的总位数(不包括高位的0)/4*/}*xlong;intinit(xlong*a,intdigit4){intI;/*.init.*/Iongnode*j;(*a)=(xIong)maIIoc(sizeof(structxlong));/*为a的头结构申请空间,并赋初始值*/(*a)>High二NULL;(*a)-
8、〉Low二NULL;(*a)->High二NULL;