超长正整数地加法.docVIP

  • 1
  • 0
  • 约6.88千字
  • 约 19页
  • 2018-07-09 发布于江苏
  • 举报
超长正整数地加法

PAGE 沈 阳 航 院 设 计 用 纸 沈 阳 航 空 工 业 学 院 课程设计学 号 200604061425班 级 6406112 姓 名 王洪臣 指导教师 尹航 2008年 3 沈阳航空工业学院课程设计任务书机械与汽车学院 汽车设计与制造专业 6406112班 学号200604061425一、课程设计题目:超长正整数的加法二、课程设计工作自2008年3月三、课程设计内容:用C语言编写软件完成以下任务:采用一个带有头节点的环形链来表示一个非负的超大正整数。如可以从低位开始为每个数字编号,第一位到第四位,第五位到第八位···的每四位组成的数字,依次放在链表的第一个,第二个···节点中,不足四位的最高位存放在链表的最后一个节点中,表头节点的值规定为-1。四、课程设计要求:程序质量: 贯彻结构话程序设计思想。 用户界面友好,功能明确,操作方便;可以加以其他功能或修饰。 用户界面中的菜单至少应包括“输入”,“退出”2项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:封面课程设计任务书目录需求分析(分析题目的要求)程序流程图(总体流程图和主要功能模块流程图)核心技术的实现说明及相应程序段个人总结参考资料源程序及适当的注释指导教师:尹航 学生签名:王洪臣目录 TOC \o 1-3 \h \z HYPERLINK \l _Toc172688515 一、需求分析 ……… PAGEREF _Toc172688515 \h 2 HYPERLINK \l _Toc172688516 二.程序流程图 …….… PAGEREF _Toc172688516 \h 3 HYPERLINK \l _Toc172688517 三、核心技术的实现方法、程序段及注释… PAGEREF _Toc172688517 \h 8 HYPERLINK \l _Toc172688518 四.个人总结 ……... PAGEREF _Toc172688518 \h 14 HYPERLINK \l _Toc172688519 五、参考文献 ……... PAGEREF _Toc172688519 \h 14 HYPERLINK \l _Toc172688520 六、源程序 ……… PAGEREF _Toc172688520 \h 14 一、需求分析 大整数 5678907654321 可用如下带表头结点 head 的循环链表表示: 大整数 “567890987654321” 可用如下带头结点 head 的循环链表表示: 两者的和也用循环链表表示。先创建一个空循环链表:进位标志为 0 。 创建一个结点, s 指向它。求 *p 结点的值域与 *q 结点的值域与进位标志之和。 4321+4321+0=8642 ,重新设置进位标志和 *s 的值域:分别为 “ 和与 10000 的商 ” 、 “ 和与 10000 的余数 ” 。 8642/10000=0 , 8642%10000=8642 。 连接: r-next=s; s-next=head; r=s; p 后移, q 后移。 重复上述操作,直到 *p 结点的值域为 -1 或 *q 结点的值域为 -1 。 判断 p 和 q 的情况: 如果 p!=head ,则将其余结点依次连入和的链表中。 如果 q!=head ,则将其余结点依次连入和的链表中。 输出和的链表:从最后一个结点到第一个结点依次输出其值域。 可先将表逆置: 再从第一个到最后一个依次输出其值域。 ? 二.程序流程图 1.程序总体结构图:定义循环链表指针*p1,*p2有放和值的循环链表*r,建立动态链表的指针*s.以上三个指针struct nedo型指针。并且循环链表头指针,尾指针相重合。输入p1→num,p2→num-1=head→num;关于head=s=(struct nedo*)malloc(sizejof(struct nedo))While(p1→num!=-1||p2→num!=-1)*p1与p2*两链表对应节点求和;并把和存放在*r中;每次只和一个节点;开辟一个节点,并把指针赋给*s.s→num%10000的值保留于原节点;s→num/10000的值加在下一个节点中r→next=s建立链接关系;使新开辟的节点链入*r中s→next=head;使s再去开辟并认为地址是headr=s;使r作为表头p1=p1→next p1后移p2=p2→next p2后移 P1!=head

文档评论(0)

1亿VIP精品文档

相关文档