超长正整数的加法

超长正整数的加法

ID:33844526

大小:171.00 KB

页数:19页

时间:2019-03-01

超长正整数的加法_第1页
超长正整数的加法_第2页
超长正整数的加法_第3页
超长正整数的加法_第4页
超长正整数的加法_第5页
资源描述:

《超长正整数的加法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、沈阳航空工业学院课程设计学号200604061425班级6406112姓名王洪臣指导教师尹航2008年3月20日沈阳航空工业学院课程设计任务书机械与汽车学院汽车设计与制造专业6406112班学号200604061425一、课程设计题目:超长正整数的加法二、课程设计工作自2008年3月17日起至2008年3月21日止三、课程设计内容:用C语言编写软件完成以下任务:采用一个带有头节点的环形链来表示一个非负的超大正整数。如可以从低位开始为每个数字编号,第一位到第四位,第五位到第八位···的每四位组成的数字,依次放

2、在链表的第一个,第二个···节点中,不足四位的最高位存放在链表的最后一个节点中,表头节点的值规定为-1。四、课程设计要求:程序质量:u贯彻结构话程序设计思想。u用户界面友好,功能明确,操作方便;可以加以其他功能或修饰。u用户界面中的菜单至少应包括“输入”,“退出”2项。u代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:l封面l课程设计任务书l目录l需求分析(分析题目的要求)l程序流程图(总体流程图和主要功能模块流程图)l核心

3、技术的实现说明及相应程序段l个人总结l参考资料l源程序及适当的注释指导教师:尹航学生签名:王洪臣目录一、需求分析………2二.程序流程图…….…3三、核心技术的实现方法、程序段及注释…8四.个人总结……...14五、参考文献……...14六、源程序………14一、需求分析大整数"5678907654321"可用如下带表头结点head的循环链表表示:大整数“567890987654321”可用如下带头结点head的循环链表表示:两者的和也用循环链表表示。先创建一个空循环链表:进位标志为0。创建一个结点,s指向它。

4、求*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,则将其余结点依次连入和的链表中。输出和的链表:从最后一个结

5、点到第一个结点依次输出其值域。可先将表逆置:再从第一个到最后一个依次输出其值域。 二.程序流程图1.程序总体结构图:定义循环链表指针*p1,*p2有放和值的循环链表*r,建立动态链表的指针*s.以上三个指针structnedo型指针。并且循环链表头指针,尾指针相重合。输入p1→num,p2→num-1=head→num;关于head=s=(structnedo*)malloc(sizejof(structnedo))While(p1→num!=-1

6、

7、p2→num!=-1)*p1与p2*两链表对应节点求和;

8、并把和存放在*r中;每次只和一个节点;开辟一个节点,并把指针赋给*s.s→num%10000的值保留于原节点;s→num/10000的值加在下一个节点中r→next=s建立链接关系;使新开辟的节点链入*r中s→next=head;使s再去开辟并认为地址是headr=s;使r作为表头p1=p1→nextp1后移p2=p2→nextp2后移P1!=head假真链入其余节点P2!=head假真链入其余节点输入和链表,从最后一个节点到第一个节点依次输出其值域三、核心技术的实现方法、注释#include

9、h>#include#defineHUNTHOU10000/*不带参数的宏定义*/typedefstructnode{intdata;structnode*next;}NODE;/*定义链表结构*/NODE*insert_after(NODE*u,intnum);/*在u结点后插入一个新的NODE,其值为num*/NODE*addint(NODE*p,NODE*q);/*完成加法操作返回指向*p+*q结果的指针*/voidprintint(NODE*s);NODE*inputint(vo

10、id);intmain(){NODE*s1,*s2,*s;NODE*inputint(),*addint(),*insert_after();printf("EnterS1=");s1=inputint();/*输入被加数*/printf("EnterS2=");s2=inputint();/*输入加数*/printf("S1=");printint(s1);putchar('');/*显示被加数*/prin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。