1、 C C 语言语言课程设计说明书课程设计说明书 题目:题目: 长整型数四则运算长整型数四则运算 学学 院:院: 班班 级:级: 学学 生:生: 学学 号:号: 班内序号:班内序号: 提交日期:提交日期: 年年 月月 日日 目目 录录 一、需求分析一、需求分析. 1 二、设计思路二、设计思路. 1 三、详细设计三、详细设计. 2 1、主要函数 . 2 2、函数的主要调用关系图 3 四、调试分析及编程心得体会四、调试分析及编程心得体会 3 五、用户手册五、用户手册. 3 六、测试结果六、测试结果. 3 七、源程序代码七、源程序代码 . 4 1、 main.c 主控文件 . 4 2、IntFace.
2、h 程序界面模块头文件 5 3、IntFace.c 程序界面处理模块文件 . 6 4、LongInt.h 长整型数输入输入及运算模块头文件 9 5、LongIO.c 长整型数输入输出处理模块文件. 9 6、LongInt.c 长整型数运算处理模块文件 . 11 7、DuCiLink.h 双向循环链表处理模块头文件16 8、DuCiLink.c 双向循环链表处理模块代码 .17 一、一、需求分析需求分析 1、 设计一个实现任意长的整数进行四则运算的程序。 2、 输入和输出形式是按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开,长整数位数没有上 限,以分号结束长整型数据的输入。 3、 程序执
3、行的命令包括: 1) 、输入长整数 1;2) 、输入长整数 2;3) 、输入执行的运算符;4) 、计算并输出结果;5) 、结束。 4、测试数据: (以加法为例) (1) 、0;0;+;应输出“0” 。 (2) 、;+;应输出“” 。 (3) 、; 0000;+;应输出“01”. (4) 、;+;应输出“0”. (5) 、;+;应输出“1” 。 (6) 、99;99;+;应输出“9998”. (7)9999;1;+;应输出“0000”. 二、设计二、设计思路思路 我们首先要考虑的是如何表示长整型数。按照传统习惯要求每 4 位数形成 1 组,而一个长整型数可能 会有很多组这种 4 位数,而每节之间
4、是有先后顺序的,因此我们可以考虑用数组和链表来存储数据。(1) 再考虑到每个长整型数的长度在输入之间是无法预知的,因此使用链表在存储空间的分配上更方便一些。 (2)在输入数据时总是从高位到低位地存储,而计算时总是从低位向高位运算,因此采用双向链表更方便, 而为了从头结点方便地转到尾结点可以采用循环链表。总之,为了实现上述功能,应以双向循环链表表示 长整数,每个结点含一个整型变量,且仅绝对值不超过 9999 的整数,整个链表用十进制数表示。(3)对于 每一个长整型数可以设置一个头结点头结点,其中的数据域用来表示该长整型数的正负号及组数,该值的符号则 表示该长整型数的符号,该数的绝对值表示该长整型
5、数包含的 4 位数的组数。第一个存储 4 位数据组的结 点称为首结点首结点,而最后一个 4 位数据组结点称为尾结点尾结点。 为此需要两个结构数据类型:双向循环链表和长整数,两个类型采用相同的结构,只是双向循环链表 用来存储数据,长整型用表示数据的运算。 1、 双向循环链表的数据结构及操作定义如下: typedef short ElemType; /定义基本数据类型,我们采用 short 来表示任意 4 位整数。 typedef struct DuCiLinkNode / 双向循环链表结点的存储结构 ElemType data; struct DuCiLinkNode *prior; /指向上一
6、结点 struct DuCiLinkNode *next; /指向下一结点 DuCiLinkNode,*DuCiLinkList; /定义双向循环链表结点及链表的类型名 基本操作:基本操作: DuCiLinkNode *MakeNode(ElemType e); /以 4 位整数 e 构造 1 个双向循环链表结点 Status InitList(DuCiLinkList *L); /初始化 1 个双向循环链表,分配 1 个结点作头结点 /数据域赋初值 0,上下结点指针指向自己 void DestroyList(DuCiLinkList *L); /消毁 1 个双向循环链表,释放它所占用的所有内存空间 /并让链表*L 指向 NULL void ClearList(DuCiLinkList L); /清除 1 个双向循环链表,释放