沈阳航空工业学院课程设计学号__200704021110_ 班级___7402104____ 姓名_ 谷程_____ 指导教师___ 尹航___ 2008 年 9月 12日沈阳沈阳航空工业学院课程设计任务书电子信息工程学院电子信息工程专业 7402104 班学号 200704021110 一、课程设计题目:超长正整数的加法二、课程设计工作自 2008 年9月8 日起至 2008 年9月 12日止三、课程设计内容: 运用所学的 C 语言知识,编制和调试程序,具有如下功能: 采用一个带有头节点的环形链来表示一个非负的的超大正整数。如可以从低位开始为每个数字编号,第一位到第四位,第五位到第八位…的每四位组成的数字, 依次放在链表的第一个、第二个、…节点中, 不足四位的最高位存放在链表的最后一个节点中,表头节点的值规定为-1。四、课程设计要求: 程序质量: ?贯彻结构化程序设计思想。?用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。?用户界面中的菜单至少应包括“输入”、“退出”2 项。?代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书: 课程结束后,上交课程设计说明书(打印稿和电子稿) ,其内容如下: ?封面?课程设计任务书?目录?需求分析(分析题目的要求) ?程序流程图(总体流程图和主要功能模块流程图) ?核心技术的实现说明及相应程序段?个人总结?参考资料?源程序及适当的注释指导教师: ______________ 学生签名: _____________ 五、成绩: 六、教师评语: 沈阳航院设计用纸 I 目录一、需求分析............................................................. 1 二、程序流程图......................................................... 2 三、核心技术的实现说明及相应程序段................ 5 四、个人总结............................................................. 9 五、参考文献............................................................. 9 六、源程序................................................................ 10 沈阳航院设计用纸 1 一、需求分析经过对程序设计题目的分析可知, 整个程序的设计实现要求的是需要把超过 int 存储能力的超长正整数进行存储,并且把它们进行相加的运算。首先, 要设计一个链表来表示一个超长正整数, 把他从低位向高位开始进行编号,由程序提取和调用,然后按照一定数目存储到结点之中。然后, 从两个表头的结点开始, 顺序依次对应相加, 求出所需要的进位后代入运算, 返回指定链表。最后,按照排列好的顺序输出。 1 输入超长正整数; 2 储存到链表之中为其分配出相应的空间; 3 由程序从链表中调出结点中的数按找排好的顺序进行相加,进位; 4 每个结点相加后在按顺序从最后一个结点到第一个结点依次输出其值域; 5 得出相加的结果,并递归输出。沈阳航院设计用纸 2 二、程序流程图 1 、程序总体流程图完成加法操作 sum=x+y 开始建立链表存储 x,y 结束输出结果 sum 输入超长正整数 x,y 图 1 程序总体结构图沈阳航院设计用纸 3 2 、主函数流程图开始输入 x,y 调用 inputint() 调用 addint() 计算 sum=x+y 调用 printlongint() 输出 sum 结束图2 主函数功能流程图沈阳航院设计用纸 4 3、结点相加框图图3 结点相加框图 while(pp → data!=-1&&qq → data!=-1) *pp 与*qq 两链表对应节点求和; 并把和存放在*s 中; 每次只和一个节点; 开辟一个节点,并把指针赋给*s. long group=pow(10,SIZE) 和值后 4位(group%10000) 的值保留于原节点; 调用 insert_after 将和值进位(group/10000) 的值加在下一个节点中 pp=pp->next(pp 后移) qq=qq->next(qq 后移) r 指向 pp,qq 中的较长者 while(r->data!=-1) 链入其余节点沈阳航院设计用纸 5 三、核心技术的实现说明及相应程序段这个程序主要由主函数、定义链表结构、插入结点、输入并存入链表、结点的对应相加 4 个自定义函数组成。其中插入结点、输入并存入链表、结点的对应相加为其核心。具体过程如下:
200704021110超长正整数的加法 来自淘豆网m.daumloan.com转载请标明出处.