当前位置:文档之家› 长整数的加法运算-数据结构与算法课程设计

长整数的加法运算-数据结构与算法课程设计

长整数的加法运算-数据结构与算法课程设计
长整数的加法运算-数据结构与算法课程设计

题目:长整数的加法运算

学院:计算机科学与工程学院

专业:信息安全

姓名:农锦文

学号:1200360220

指导教师:张瑞霞

2014年10月18日

目录

引言 (4)

1、系统概述 (4)

2、系统分析 (5)

2.1需求分析 (5)

2.2系统功能 (5)

2.3开发环境 (5)

3、详细设计 (5)

3.1功能结构框图 (6)

3.2 软件设计 (6)

3.2.1 定义链表与接收数据输入 (6)

3.2.2长整数的加法运算 (8)

3.2.3显示长整数相加结果 (10)

4、所遇到的问题和分析解决 (10)

5、系统特色及关键技术 (11)

6、结论 (11)

参考文献 (12)

引言

随着计算机技术的发展,人们利用计算机开发了许许多多方便的,实用的应用软件,在信息化的现代社会里,人们依赖着很多的应用软件,这些软件在推进社会发展的同时,也丰富了人们的生活,然而,在开发过程中,由于计算机系统的局限性,在需要某些功能时,总会遇到困难。例如在开发某些工程项目时,有时需要对很大的数进行计算。但是计算机本身无法计算某些较大的数,所以我们有必要设计专门的算法对一些较大的数进行相应的计算,通过简化运算之后,对其他程序功能的编写能起到良好的促进作用,大大的减轻了程序员的负担。此次设计的程序将用于长整数的加法运算,程序运行时,将提示用户输入两个长整数,然后将两个长整数相加的结果输出。

1、系统概述

在该长整数加法运算系统中,我将定义双向循环链表来表示长整数,按照中国对长整数的表示方法,如199999999表示为1,9999,9999。双向循环链表数据域存储的是长整数的每4位。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。通过造双向循环链表,可以对长整数进行方便的存储,在对长整数进行数学运算时,也能通过方便的操作链表,从而对长整数进行需要的计算。

在实现该长整数加法运算的系统中,我将会编程实现以下功能。定义一个函数,用于接收长整数的输入,同时将长整数存储到双向循环链表当中,为了检验是否按预期要求进行存储,我还会编写一个函数,将双向循环链表中数据域的值打印出来。定义一个长整数相加的函数,实现两个长整数加法运算的功能,实际上是对双向循环链表进行操作,这里包括结点空间的申请,插入结点,修改指针所保存的值。

当两个长整数完成加法运算后,我会定义一个显示结果的函数,将它们相加的结果打印出来。一些较大的整数,在单纯的用计算机进行相加运算的时候可能会产生溢出现象,但该系统每次只对4位整数进行运算,避免了数据过大在计算时产生的溢出问题。

2、系统分析

2.1需求分析

设计一个计算两个长整数加法的程序,要求长整数的位数不能规定上限。根据中国对于长整数的表示习惯,长整数每4位用逗号隔开。故可以利用双向循环链表对长整数进行存储,每个结点可以存储长整数的4位,即每个结点的数据域最大值为9999,头结点的数据域的值的正负号可以表示长整数的正负,其绝对值可以表示结点数目。为了运算与编程的方便,在相加过程中不要破坏两个操作数链表。

2.2系统功能

(1)建立双向循环链表,用于保存长整数及长整数的运算。

(2)接收长整数的输入,长整数的每4位都保存到链表的结点中。

(3) 对存入双向链表的长整数进行加法运算,在进行运算时,能很好的处理进位,借位问题以及对长整数的正负能做出判断,然后进行相应的运算处理,保证运算结果能与预期结果一致。

(4)正确的输出运算后的结果,这里的运算结果也是长整数,故对数的存储也是采用双向循环链表,输出结果即是按长整数的显示方式打印出双向循环链表数据域的值。

2.3开发环境

所用开发环境为微软公司开发的VC++6.0软件,该软件可将“高级语言”翻译为“机器语言”,该程序开发语言为C语言。

3、详细设计

3.1功能结构框图

图3-1系统功能结构框图

这是长整数相加运算的一个设计思路。在该系统中,我会设置几个函数,分别实现不同的功能,如接收数据输入的函数,将两个长整数进行相加的函数,显示出长整数相加结果的函数。重点是在加法运算的函数里,在功能结构框图中只是大致的介绍出设计思路,分3种情况考虑,具体在每种情况里,也分许多细小的情况进行处理。该系统重要的部分是对双向循环链表进行操作。

3.2 软件设计

3.2.1 定义链表与接收数据输入

因为该系统的功能是对长整数进行运算,所以对长整数是用双向循环链表进行存储,链表每个结点均存储绝对值不超过9999的整数,在进行运算时,依次对每个结点进行运算,再判断是否需要进位和借位。该系统主要使用的数据结构是双向循环链表,无任何特殊的算法,只有对双向循环链表的一些简单操作,如插入操作,注意前驱指针和后继指针发生变化时的修改即可。

(1)定义双向循环链表的抽象数据类型

图3-2双向循环链表的结点定义

此双向循环链表中,定义了一个头结点来保存长整数的信息,即头结点的正负表示该长整数的正负,头结点数据域的绝对值表示双向循环链表除头结点外的结点个数。为了后面的编程方便,将结点类型重命名为PNODE。头结点数据域的信息对于加法运算起到一定的作用。用双向循环链表来保存长整数,避免了长整数位数达到上限的问题,间接的解决了计算机无法计算某些较大整数的问题。同时,定义了一个双链表类型的结构体,对双向循环链表的头指针和尾指针进行封装,双链表类型的结构体可以准确的表示长整数。同样为了后续的编程方便,将双向循环链表类型的结构体重命名为List。数据类型如下图所示,

图3-2定义List指针表示双向循环链表

(2)接收长整数的输入

定义一个函数,用于接收长整数的输入,将长整数保存到双向循环链表中,长整数的每4位分别保存到链表的结点数据域中。

在接收数据输入时,提示用户按XXXX,XXXX,XXXX;的格式输入,该程序定义了一个char ch用于保存“,”和“;”,当用户输入分号时表示结束输入,逗号用于间隔开每个结点。在接收用户的输入时,采用的方法是先让用户输入整型变量,然后再输入字符型变量,即提示用户每输入一个4位整数,就输入逗号或分号,若用户输入分号,则表示用户输入数据完毕,每输入一个4位整数,申请一个PNODE型的结点空间(申请结点空间的时候要注意判断结点空间是否申请成功,若申请结点空间失败,则打印提示信息,然后退出函数的操作),然后将该结点空间插入表示长整数的双向循环链表中,新申请结点的前驱指针保存原链表最后一个结点的地址,后继指针保存最高位结点的地址,这里是通过while循环的方式把双向循环链表建立起来,直到输入ch的值为分号时,结束链表的建立。这时4位整数已经存储到链表的结点数据域中,长整数已经用双向循环链表表示。输入完成后,判断出head->next->data的正负以及统计出除头结点外的其

他结点个数,然后将结果保存到头结点的数据域中,用于表示长整数的正负及长整数的位数长度。为了确定长整数已经按预期的形式保存到双向循环链表当中,我设置了一个打印链表的函数,从头结点的后继结点开始对链表进行访问,直到访问到链表最后一个结点为止,将链表中的每个结点数据域打印出来,观察其结果。如果某个结点的数据域的值为0000,打印链表时显示出来的结果是0,这对后面的计算没有影响,类似于这样的问题在计算完长整数后,显示结果时会进行处理,此时仅是确认链表中数据域的信息。

长整数接收输入完毕后,已经保存到一个带有头结点的链表当中了,为了后续的计算方便,需要对该双向循环链表设置一个尾指针。定义一个函数,用于设置双向循环链表的尾指针,在该函数中定义一个PNODE类型的变量p,p从链表的头结点的后继结点开始进行访问,当p访问到链表的最后一个结点时,结束循环,将p作为函数的返回值返回,此时p表示的便是该双向循环链表的尾指针。因为在加法的操作中,都是先对双向循环链表的最后一个结点进行操作,所以设置尾指针是很方便的,很有必要的。

3.2.2长整数的加法运算

长整数是用双向循环链表进行存储的,对长整数进行加法运算,相当于对双向循环链表操作。在此程序当中,进行加法运算时,可分为3种不同的情况,即两正数相加,两负数相加,两符号互异的数进行相加,符号互异的两数在进行运算时,可视为做减法运算。下面进行详细的介绍。链表相加操作时,采用的思路是将长度较短的链表加到长度较长的链表中,所以在相加之前,先计算出两个链表的长度,用长度较长的链表先保存计算结果,最后将结果赋给“结果”链表。为了说明及编程方便,用p指向长链表的尾结点,用q指向短链表的尾结点,此次设计的思想是长链表的值加上短链表的值,最后保存长链表。

(1)两正数相加

如果两个都是绝对值不超过9999的整数,则将两个数进行相加,即将p的数据域的值加上q的数据域的值,然后判断相加结果即p结点的数据域的值是否超过9999,如果超过9999,则需要进行进位处理,即申请一个PNODE型结点空间,其数据域用于保存进位值,进位值为1,将该结点插入头结点的后面,头结点的后继指针保存该结点的地址,该结点的前驱指针保存头结点的地址,后继指针保存原头结点后继结点的地址。若不产生进位,则用result_list保存所得到的结果链表,result_list为List类型的变量,即它表示双向循环链表。

如果两个长整数当中,有超过9999的数,即该链表中存在多个结点,则对其从最后一个结点进行操作,即p结点数据域的值加上q结点数据域的值,p q指针依次往前访问链表,重复如上的相加操作,直到p或q访问到头结点为止,出现需要进位的情况时,前驱结点数据域进行加一操作,该结点数据域进行减10000的操作,若在最高4位结点产生进位,则申请一个PNODE型的结点空间,其数据域保存进位值,将该结点插入头结点的后继结点,注意保持链表最后一个结点的后继指针一直保存头结点后继指针的地址,保证该链表一直是双向循环的,否则在打印链表时会出现指针异常的情况。最后用result_list保存所得到的结果链表。

(2)两负数相加

当两个长整数均为负数时,进行以下操作。如果两数当中存在一个数,其绝

对值小于9999时,分为两种情况,一种是两个数的绝对值都小于9999,另一种则是只有一个数的绝对值小于9999。

当两个数的绝对值都小于9999时,将两个双向循环链表的尾结点数据域进行相加,即p结点数据域的值加上q结点数据域的值,若相加结果<-9999,则产生进位,此时要做进位处理,即申请一个PNODE型的结点空间,命名为high,high 的数据域的值为-1,p数据域的值加上10000然后进行取反操作,操作结果用result_list进行保存。

如果只有一个数的绝对值小于9999,另一个数的绝对值大于9999,则先将q->data进行取反操作,再将其与p->data进行相加,同时从p指向的结点开始进行进位判断,直到判断到最高位结点为止,此处的进位处理情况与(1)中的进位处理相同,但在处理最高位时,要注意符号的正负性。若在最高位产生进位,则申请新的PNODE型结点空间,命名为high,high->data的值为-1,此时p指向的是最高位结点,则p的数据域的值先加上10000,然后进行取反操作,这是为了将第2个4位整数的负号去除。

除上述两种情况,其他情况下可对表示长整数的链表,从其尾结点处开始,将q->data加到p->data中,在进行相加的过程中判断是否需要进位,若相加结果绝对值超过9999,则需要进行进位处理(最高位进位做特殊处理),即前驱结点进行+1操作,该结点数据域进行-10000的操作。若操作到最高位的数据域,则申请新的PNODE型结点空间,命名为high,high->data的值为-1,此时p指向的是最高位结点,则p的数据域的值先加上10000,然后进行取反操作,这是为了将负号去除。最后所得的结果用result_list链表进行存储,将该变量作为相加函数的返回值。若两个链表长短不同,q已经访问到最高位结点而p还未访问到最高位结点,则先将q的数据域的值进行取反操作,然后与p数据域的值进行相加,这里判断进位,处理进位的方法与上述情况相同。

(3)两符号互异的长整数相加,做相减运算

①当且仅当两个长整数绝对值均不大于9999时,直接将两个链表的尾结点数据域进行相加,即p结点数据域的值加上q结点数据域的值,将所得结果的链表用result_list进行存储。两个绝对值不超过9999的数,且两数的符号互异(即两数为一正一负),它们在做加法运算时,所得的结果长整数的绝对值不会超过9999,故这里不用考虑进位的问题,两数直接相加即可。

②两个长整数当中存在一个长整数的绝对值不超过9999时,若q->data为负数,判断p->data与q->data的绝对值大小,若p->data的绝对值小于q->data,则需要进行借位操作,即p的前驱结点数据域进行-1操作,p结点数据域进行+10000操作,如果不需要借位,则p的数据域和q的数据域直接进行相加。最后结果用result_list存储,将result_list返回。如果q->data为正数,判断p结点数据域与q 结点数据域的大小,若p->datadata,则需要进行借位操作,然后p结点的数据域减掉q结点数据域的值。若不需要借位操作,则p的数据域直接减去q的数据域的值。

③两个长整数的绝对值均大于9999,时,均从链表的尾结点开始进行相减操作,在需要借位时,前驱结点的数据域-1,自身结点的数据域+10000,若q已到达最高位,p还未到达最高位时,判断p的数据域与q的数据域的值,看是否需要进行借位操作,然后p的数据域的值直接加上q的数据域的值。若p和q同时指向最高位的结点,则它们的数据域的值可以直接进行相加操作。最后所得到的的结果链表用result_list进行存储,将result_list返回。

3.2.3显示长整数相加结果

由程序可知,两个长整数相加的结果是用List类型的双向循环链表进行存储,可以通过定义一个简单的打印链表数据域的值的函数,将长整数相加的结果打印出来。在打印链表的过程中,可做一些处理,使得显示结果不影响长整数的数值大小。在打印每个结点数据域之前对数据域的值进行判断,若结点数据域的值小于1000,可在显示数据前面“补0”,使得每个结点显示出来的都是“4位整数”。在打印链表时,定义一个PNODE类型的p,用p从最高位结点开始,依次访问链表中的每个结点,直到尾结点,然后将结点的数据域的值“按要求”显示在屏幕上,即打印出来的结点数据域的值用逗号隔开,这就是中国对于长整数的传统表示方法。程序运行结果如下图所示:

图3-3程序运行结果

4、所遇到的问题和分析解决

4.1对双向循环链表进行操作时,总是出现指针异常的情况,如在做插入操作时,需要修改指针的值,无意间使某些指针成为“野指针”。通过分析每个指针变量所存储的信息,便可找出异常指针,然后将其赋为NULL指针或者修改其信息,使该指针成为正确的指针,同时,在定义指针的时候要将指针的值初始化为NULL,这样可以避免指针成为“野指针”。

4.2 在进行相加(相减)操作时,所得到的相加(相减)结果不是预期结果。解决该问题,要通过分析测试数据的性质,观察两个测试长整数满足了什么条件,执行了程序当中的哪条语句,是哪条语句或语句块没有考虑到功能的完善性,再进一步的从数学角度分析数的性质,最后通过修改部分语句,完善其功能。

4.3在输出长整数相加结果的函数当中,输出的长整数产生“错误”,如1,0001的数输出为1,1。要解决该问题,先分析长整数的性质,通过分析,发现除最高位结点外,其他结点的数据域的值,小于1000的数要在前面补上“0”,使他们

以4位整数的形式输出,这样才不会影响整个长整数的大小及表示方法。

5、系统特色及关键技术

该系统的特色在于能计算较大的,位数较长的长整数。无论多长的整数,运用该系统进行计算时,都可以将该整数按每4位的“分割”方法,将4位整数保存到双向循环链表的结点数据域中,然后再进行计算(即对链表进行操作,如修改指针,数据域的值),相当于每次只进行4位数的计算。解决了计算机无法计算一些较大数据的问题。关键技术在于双向循环链表的操作以及在做长整数相加操作时的进位,借位操作。做相加操作之前,先计算出两个链表的长度,将较短的链表“加进”较长的链表中,最后直接用较长的链表表示相加结果,这样就不需要额外建立一个链表来保存两个长整数相加的结果,减少了结点空间的申请。

6、结论

在本次的数据结构与算法课程设计中,该系统提供了长整数加法运算的功能,根据课程设计指导书的测试数据进行测试,该系统也成功实现了这些数据的加法运算。与加法算法类似,该系统中也可以增加长整数减法功能,还可以通过查阅更多的相关资料,文献,增加乘法,除法功能。

对于需要使用该系统的读者需注意,在进行输入长整数的时候务必要按xxxx,xxxx,xxxx;的格式进行输入,否则会出现错误,导致程序无法执行。在接收数据输入时,我采用的方法是先输入整型变量,然后再输入字符型变量,这里对用户的使用有所限制,仍需要改进。

通过本次的数据结构与算法课程设计,我体会到了开发项目的艰辛。对于一个优秀的程序来说,除了要熟练掌握一门编程语言之外,还要掌握并熟练使用数据结构与算法,尤其是一些经典的算法。开发一个系统或应用软件,除了要有一腔热血之外,我认为更重要的是要有毅力,贵在坚持。开发一个软件项目,从查阅资料,了解用户需求,到最后的调试程序,维护系统,每一个阶段都是环环相扣的,前面的工作是为后面作铺垫,后阶段的工作也是基于前阶段的工作。在理论课的学习上,我感到学习的知识抽象性很强,幸运的是通过课程设计的实践,能让我进行充分的思考,尽情地发挥出自己在课堂上所学到的理论知识。此次的课程设计,让我的思维活跃了起来,闲暇的时间我总在想对于该系统用什么数据结构和算法比较合适,也让我的思维比以前更加严谨(如在判断长整数什么时候该进位,借位,长整数的正负该适于做什么运算,这时该如何对双向循环链表进行操作)。也许程序员们每天就是在做这些事情吧,当然,要从事编程行业的话,是要不断的学习的,毕竟知识每天都在更新变化,我们需要保持学习的热情,有句话叫“让编程改变世界”,同时也希望我以后能在编程的道路上学到更多,使自己的思维更加活跃而严谨,如果有机会,我会尝试去开发更完整,更完善的程序。

参考文献

[1]刘艳飞,迟剑,房健等.C语言范例开发大全[M].北京:清华大学出版社2010:578~582.

[2]黄国瑜,叶乃菁.数据结构[M].北京:清华大学出版社,2001:320~343.

两个任意长的整数的求和运算

两个任意长的整数的求和运算 进制的转换 2014 年6月 软件综合课程设计

目录 一、问题陈述 二、需求分析 三、概要设计 四、详细设计 五、程序代码 六、运行结果与测试 七、设计体会与总结

两个任意长的整数的求和运算 一、问题陈述 设计一个程序实现两个任意长的整数的求和运算。 利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。 二、需求分析 1、本程序实现计算任意长的整数的加法运算. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。 2、本演示程序中,集合的元素限定为数字字符[‘0’~’9’],输入字符可以任意长,输入形式以“#”为结束标志,串中字符顺序不限,且允许出现重复字符。 3、利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以#结束,每四位一组。 三、概要设计 在此说明数据结构设计和关键的算法设计思想 Add()函数是实现该问题的主要函数即相加。 typedef struct et 定义双循环链表的存储结构. void setin(dtp *a) 读入数据存储在双链表中的函数; void print1(dtp *w,int len) 原样输出输入的数,略去结束符"#"; void print2(dtp a,int len) 输出运算结果,以每四位一个","样式; 四、详细设计 程序流程图

五、程序代码 #include using namespace std; #define null 0 typedef struct et //自定义双循环链表的存储结构.

超长正整数的加法

超长正整数的加法 请设计一个算法来完成两个超长正整数的加法。 *问题分析与算法设计 首先要设计一种数据结构来表示一个超长的正整数,然后才能够设计算法。 首先我们采用一个带有表头结点的环形链来表示一个非负的超大整数,如果从低位开始为每个数字编号,则第一位到第四位、第五位到第八位...的每四位组成的数字,依次放在链表的第一个、第二个、...结点中,不足4位的最高位存放在链表的最后一个结点中,表头结点的值规定为-1。例如: 大整数“587890987654321”可用如下的带表头结点head的链表表示: 按照此数据结构,可以从两个表头结点开始,顺序依次对应相加,求出所需要的进位后代入下面的运算。 具体的实现算法请见程序中的注释。 *程序与程序注释 #include #include #define HUNTHOU 10000 typedef struct node{ int data; struct node *next; }NODE; /*定义链表结构*/ NODE *insert_after(NODE *u,int num); /*在u结点后插入一个新的NODE,其值为num*/ NODE *addint(NODE *p,NODE *q); /*完成加法操作返回指向*p+*q结果的指针*/ void printint(NODE *s); NODE *inputint(void); void main() { NODE *s1,*s2,*s; NODE *inputint(), *addint(), *insert_after(); printf("Enter S1= "); s1=inputint(); /*输入被加数*/ printf("Enter S2= "); s2=inputint(); /*输入加数*/ printf(" S1="); printint(s1); putchar('\n'); /*显示被加数*/ printf(" S2="); printint(s2); putchar('\n'); /*显示加数*/ s=addint(s1,s2); /*求和*/ printf("S1+S2="); printint(s); putchar('\n'); /*输出结果*/ } NODE *insert_after(NODE *u,int num) { NODE *v;

分数的加减法及简便运算

分数的加减法 一、同分母的分数加减法 知识点:在计算同分母的分数加减法中,分母不变,直接用分子相加减。 注意:在计算同分母的分数加减法中,得数如果不是最简分数,我们必须将得数约分,使它成为最简分数。 例题一 5654+=5 10564=+=2 注意:因为5 10 不是最简分数,所以得约分,10和5的最大公因数是5, 所以分子和分母同时除以5,最后得数是2. 例题二 1059105109= -=-注意:因为10 4 不是最简分数,必须约分,因为4和10的最大公因数 是2,所以分子和分母同时除以2,最后的数是5 2 知识点回顾:如何将一个不是最简的分数化为最简? (将一个非最简分数化为最简,我们就是将这个分数进行约分,一直约到分子和分母互质为止。所以要将一个分数进行约分,我们必须找到分子和分母的最大公因数,然后用分子和分母同时除以他们的最大公因数。)

专项练习一:同分母的分数加减法的专项练习 一、计算 715 - 215 712 - 112 1 - 916 911 - 711 38 + 38 16 + 16 314 +314 34 + 34 二、连线 19 + 4 9 2 7377+ 145 +1 5 1 8 987+ 47 + 67 137 115 11141+ 18 +78 29 11 9 3 92+ 2411 +511 5 9 2 121+ 三、判断对错,并改正 (1)47 +37 = 714 (2)6 - 57 - 37 =577 -57 -3 7 =527 -3 7 =51 7 四、应用题 (1)一根铁丝长710 米,比另一根铁丝长3 10 米,了;另一根铁丝长多少米? (2)3天修一条路,第一天修了全长的112 ,第二天修了全长的5 12 ,第三天修了全长的几分之几?

第3课时 整数加法运算定律推广到小数(导学案)

第3课时整数加法运算定律推广到小数课题整数加法运算定律推广到小数课型新授课 设计说明 小数的简便运算是在学生已经学习了整数的运算定律和小数加减混合运算的基础上学习的。为了使学生直观地感知加法运算定律在小数的运算中同样适用,进一步体会运用这些定律能使计算简便,教学中从以下几点进行了设计: 1.创设情境,对比概括。 设计情境,让学生进一步了解、经历用加法运算定律进行简算的过程,理解整数的运算定律在小数运算中同样适用。采用对比的方式呈现出两位学生不同的计算思路,通过对比,使学生直观感知加法运算定律在小数运算中同样适用,并进一步体会用加法运算定律进行计算既简便,又快捷,使学生在以后的小数运算中能自觉地应用运算定律进行简算。 2.自主探究,合作交流。 《数学课程标准》中提到:“动手实践、自主探究、合作交流是学生学习数学的重要方式。”本节课让学生分组合作学习,给学生提供交流和表达的机会,多给学生自主学习的时间和空间。先学习运算定律,再进行实践练习,最后验证整数的运算定律在小数运算中同样适用。 3.边学边练,学以致用。 依据本节课的重难点,分散练习、边学边练,及时调整教学的状况,通过不同层次的练习,调动学生学习的积极性,体验数学的价值,同时充分发展学生的个性。 学习目标 1.理解整数加法的运算定律在小数加法中同样适用。 2.会运用运算定律和运算性质进行简便计算。 学习重点理解整数的运算定律在小数运算中同样适用。 学习难点能运用运算定律和性质灵活地进行简便运算。 学前准备 教具准备:多媒体课件 学具准备:口算卡 课时安排1课时 教学环节导案学案达标检测 一、复习旧知,导入新课。(5分钟)1.计算。 0.25+0.45=0.68-0.24= 7.4-6.8=3-0.75= 2.在○里填上适当的符号。 32+5○5+32 1.独立完成,汇报结果。 2.填写符号,说说运用了 哪些定律。 3.明确本节课的学习内 容。 1.在下面的□里填上适当的数, 在○里填上“+”或“-”。 (1)285+327=□+285 (2)926+82+18=926+(□○

加法简便运算

第三讲加减法简便运算 【考点】一:加法运算定律 【例题】1:四(1)班有男生31人,女生25人,全班有多少人? 【知识点】1:加法交换律:两个数相加,交换加数的位置,和不变 【知识点】2:加法交换律的表示方法,可以用符号、字母、文字来表示这一规律。 文字表示法:甲数+乙数=乙数+甲数 符号表示法:○+□=□+○ 字母表示法:a+b=b+a 【拓展】三个数或者三个以上的数相加 【例题】2:红星小学四年级有3个班,其中四(一)班有43人,四(二)班有40人,四(三)班有45人,。四年级一共有多少人? 三个或三个以上的数相加,交换加数的位置,和不变。加法交换律也适用。 哪个方法简单明了呢?

奇兵演练1:根据加法交换律填空。在()里填上合适的数,在○里填上运算符号。 ()+165=165+35 1013+214=()+() 80○50=50○80 48+29+52=48+()+() 387+425=()+ 387 525+()=137+ 525 300+600=()+()()+65=()+35 甲数+乙数=()+()偶数+()=奇数+() 78+25+22 =78 +()+25 128+275+72=128+()+275 【例题】3:李明寒假骑自行车旅行,其中三天行驶的路程如下:第一天骑了88千米,第二天骑了104千米,第三天骑了96千米。李明三天一共骑行多少千米? 【例题】4:计算:78+56+123 78+(56+123) 564+(34+58)(564+34)+58 归纳:①每组算式两边都有三个加数,加数不一样。 ②一边都是先把前两个数相加,再同第三个数相加;另一边则是先把后两个数相加,再同第一个数相加。 ③等号左右两边的和相等(不变)。 ④改变计算的顺序可以使计算简便。 总结:三个数相加,先把前两个数相加,再同第三个数相加;或者先把后两个数相加,再同第一个数相加,它们的和不变。 【知识点】3:加法结合律:三个数相加,先把前两个数相加或先把后两个数相加,和不变。对于四个数

长整数的加减运算系统说明文档11003601.

桂林电子科技大学综合设计说明书用纸 《数据结构与算法》 课程设计说明书 题目:长整数的加减运算 学院:计算机科学与工程学院 专业:信息安全 姓名:xxxxxxxx 学号:11003601xx 指导教师:张瑞霞老师

成绩评定标准及成绩 1、能按照格式进行写作,无抄袭现象(10分) 2、报告内容行文通畅,有条理性,无错别字,结构严谨。(10 分) 3、能够按照数据结构课设的格式要求、排版要求和字数要求 等,有需求分析,系统分析,详细设计,关键技术的介绍和参考文献。(10分) 4、在验收过程中,能合理的回答问题(20分) 5、软件能正常运行,实现所提出的功能(40分) 6、软件代码规范性较好(5分) 7、具有自己的创新或特色(5分) 总成绩:

目录 1、前言 (3) 2、需求分析 (4) 2.1.问题描述: (4) 2.2.基本要求: (4) 2.3.更高要求: (4) 2.4.测试数据: (4) 2.5.开发环境 Visual C++6.0(完整绿色版) (5) 3、系统概述 (5) 3.1.关键技术。 (5) 3.2.相关的函数接口 (6) 3.3.功能设计 (7) 4、系统分析 (7) 5、系统的调试与结果 (17) 5.1.调试过程出现的问题以及解决方法 (17) 5.2.成功的测试数据截图 (17) 6、课设小结 (20) 7、参考文献: (21)

1、前言 本系统主要内容是为数据结构长整数加法的实现,所以整个程序是为了实现长整数的加减法运算。设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加运算和减运算。长整数的长度没有限制,可以是任意长,正确处理好运算之后的进位和借位。 每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数4位,即不超过9999的非负整数,整个链表视为万进制数。 可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。 由于在某些工程上进行加减运算时,有时候需要对很大的长整数进行计算,但是计算机本身提供的数据类型无法保证存在几百位甚至几千位的数字,所以需要设计专门的算法系统对数据进行相应的计算。因此本系统的设计主要任务是:设计一个程序能够实现任意长整数的加减运算的程序,而且能够对一些错误异常进行辨别调整,从而迅速计算出正确无误的结果。程序输入格式是字符串,包含元素的范围是数字,都好,负号以及分号,保存时需要用到双链表将字符串每四位保存在循环链表中的一个结点中,然后在计算出运行结果。 虽然程序有些复杂,但使用方法十分简单,只需按照相关提示进行操作即可,能够为用户的学习和工作带来快捷与方便。

数据结构课程设计长整数运算

一、需求分析 【问题描述】 设计一个程序实现两个任意长的整数求和运算。 【基本要求】 利用双向循环链表实现长整数的存储,每个结点含一个整型变量。 任何整型变量的范围是:-(215-1)~(215-1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 【测试数据】 (1)0;0;应输出“0”。 (2)–2345,6789;-7654,3211;应输出“-1,0000,0000”。 (3)–9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。(4)1,0001,0001;-1,0001,0001;应输出“0”。 (5)1,0001,0001;-1,0001,0000;应输出“1”。 二、设计 1. 设计思想 (1)存储结构:循环双向链表 (2)主要算法基本思想: 1、每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加 不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数4位,即不超过9999的非负整数,整个链表视为万进制数。 2、可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示 元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。 2. 设计表示 (1)函数调用关系图: (2)函数接口规格说明: 结构体: struct dl_node { int x; dl_node *pre; dl_node *next; };

初始化: void list_init(dl_node ** h) 插入元素: void list_insert(dl_node *h,int x) 输出链表: void prin(dl_node *h) 实现相加: void list_add(dl_node *h1,dl_node *h2) 实现相减: void list_sub(dl_node *h1,dl_node *h2) 3. 详细设计 (1)输入两个数,用链表来存储。链表的头结点的数据的值为1时,表示的是输入的数非负;为-1时表示输入的数是负数。 (2)在创建链表时,让高位在链表的尾部,低位在链表的头部。 (3)在做加法时,先判断两个数的符号是否相同,如果相同,在根据加数的符号,决定和数的符号,取两个数的绝对值做加法,但是的处理进位。 (4)如果异号,用一函数来判断和的符号,判断异号的两个数相加和的符号,当两个数的长度不相等时,取较长数的符号作为和的符号,否则比两个数的大小,再决定和的符号。 (5)异号的两个数想加时,先去两个数的绝对值,用较大的数减去较小的数,差作为和的绝对值。如果相应的位够减时,直接做减法,否则借位,但是要注意被借位的值是否为零,如果为零,则继续借位。 (6)输出最终结果,输出数时,要去掉大数最前面的零,直到数的首位不是零时为止。在输出地位的数时,有可能某些单元的数低于四位,必须要在四位数的高位补零,即四位一个单元输出。空缺处用零补齐。 三、调试分析 (1)经过不断的的DEBUG,不断的输出看结果调试,最终成功 (2)经验和体会: 通过这次学习,让我认识到自己在学习上的诸多不足。从刚拿到题目到完成整个编程,从理论到实践,虽然学到很多的的东西,但是也因为自己知识的不足,不能考虑周全,完全成功的完成此次课程设计。在认识自己的不足后,我便开始认真复习书本知识,同时与动手能力强的同学互相交流,让自己学到了很多平时

四年级数学下册整数加法运算定律推广到小数说课稿

整数加法运算定律推广到小数说课稿 一、说教材: 1、说课内容: 本节课的教学内容是人教版九年义务教育六年制数学第八册的内容。 2、说教材的作用及地位:这部分内容是学生在学完小数的加减法的意义和计算法则以及小数的连加、连减和加减混合运算的基础上进行学习的,它是提高学生计算能力、加强学生计算的正确性、烂熟性、灵敏性的一个严重方面。《数学课程标准》强调数学学习要“从学生已有的生活经验出发,让学生亲身经历将实际问题抽象成数学模型并进行解释与应用的过程,进而使学生获得对数学理解的同时,在思维能力、情感态度与价值观方面得到进步和发展。”因此,在本节课中,我大胆地改变教材的呈现方式,把小数加减法简易计算的呈现方式放到一个生活大背景中,让学生通过“商品大奉送”和“找朋友”两个游戏,亲身经历活动,亲自悟出道理,使他们从中很好地提炼了数学的模型。 3、说教学目标认知目标:使学生初步理解整数加法运算定律对小数加法同样适用,并会运用这些定律进行一些小数的简易运算。 能力目标:进一步培养学生分析、综合的能力和优良的计算习惯,训练计算的灵敏性。 情感目标:通过小组合作探究,培养学生团结合作意识;通过小组之间的比赛辩论,培养学生的竞争意识。同时渗透事物之间相互联系的观点。 4、教学重、难点:引导学生理解简易计算的依据,在理解的基础上掌握简易计算的方 法。: 二、说教法: 这节课我主要采用了游戏、创设情境;自主探究、讨论、发现的教学方法放手让学生在无限的时间和空间里,根据自己的学习体验,解放地、开放地去探究,去发现,去“再创造”新知识。 三、说学法: 课改的核心是改变学生的学习方式,也就是变这种“牵引式、接受式”的学习为

长整数的四则运算

课程名称: 《数据结构》课程设计课程设计题目: 长整数的四则运算 姓名: 院系: 计算机学院 专业:计算机科学与技术 年级: 学号: 指导教师: 2014 年月日

目录 1 课程设计的目的 (3) 2 需求分析 (3) 3 课程设计报告内容 (3) 3.1概要设计 (3) 3.2详细设计 (3) 3.3调试分析 (3) 3.4用户手册 (4) 3.5测试结果 (4) 3.6程序清单 (5) 4 小结 (x) 5 参考文献 (8)

1.课程设计的目的 (1) 熟练使用 C 语言编写程序,解决实际问题; (2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; (3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 2.需求分析 问题描述:设计一个实现任意长的整数进行加法运算的演示程序。基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -215 - 1 215 - 1。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。测试数据:(1)0;0;应输出?0?。 (2)-23456789;-76543211;应输出?-100000000?。(3)-99999999;1000000000000;应输出?999(4)100010001;-100010001;应输出?0?。(5)100010001;-100010000;应输出?1?。(6)-999999999999;-999999999999;应输出?1999999999998?。 (7)1000099999999;1;应输出?1000100000000?。 实现提示:(1)每个结点中可以存放的最大整数为 32767,才能保证两数相加不会溢出,但若这样存放,即相当于按 32768 进制存放,在十进制与 32768 进制数之间的转换十分不方便,故可以在每个结点中仅存十进制的 4 位,即不超过 9999 的非负整数,整个链表表示为万进制。(2)可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。不能给长整数位数规定上限。 3.1概要设计 利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理,但不使用分隔符也不影响结果。 3.3调试分析 测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

整数加法运算定律推到小数

《整数加法运算定律推广到小数》教学设计 祖山总校杜玉华 教材分析: 教材以学生喜爱的校园体育运动为背景,采用对比的方式呈现两位学生不同的计算思路,通过对比,使学生看出两种算法的结果是一样的,从而直观感知加法的运算定律在小数运算中同样适用,并进一步体会用加法运算定律进行计算确实能使计算更快捷方便,从而让学生在今后的小数加减法计算中能根据数据特点自觉地应用运算定律进行简算。 学情分析:本节知识是在学生掌握了小数加、减法混合运算及整数的运算定律和运算性质的基础上进行学习的。 教学目标: 1、知识目标:通过有限个例证让学生理解整数的运算定律在小数运算中同样适用;并能根据数据特点正确应用加法的运算定律进行简便计算。 2、能力目标:在解决问题的过程中能培养学生的合作意识和分析、综合、推理的能力。 3、情感目标:培养学生做事认真,讲求方法,注重实效的生活观念。 教学重点:理解整数运算定律对于小数同样适用,并会运用这些定律进行一些小数的简便计算。 教学难点:能根据数据特点,应用加法的运算定律合理、灵活地解决实际生活中的一些简单问题。 教学准备: 1.预习提纲;2.课件。 教法、学法:教师以指导学生预习,组织探究活动,设疑解难为主;学生以自主尝试、合作探究学习为主。(先试后导,先练后讲) 教学过程: 一、口算抢答,引入课题。 题组一: 0.52+0.48= 2.8+0.2+5= 0.48+0.52= 2.8+(0.2+5)=

问:刚才口算的两组题目有什么特点?(让学生感受到凑整,并联想到加数相同,加数的位置不同或计算顺序不同,但计算结果一样。) 题组二: 135+39+65+11= 134-66-34= 问:你是怎样算得那么快的?(引出应用运算律可以让计算简便) 刚才简算时运用了哪些运算定律?用字母如何表示?(学生齐说,老师板书。) 二、自主学习,探究新知。 (一)提出猜想,举例验证。 1、猜一猜。 师:在我们以前的学习中,这些字母都表示整数,现在大家猜一猜,这些字母可以表示小数吗?换句话说,整数加法运算定律在小数加法运算中也能用吗? 2、交流预习成果。 师:课前我们已有过预习,现在在小组内跟同学交流一下你的想法,并举例验证你的猜想。 (学生交流时师板书出:整数的运算定律在小数运算中同样适用吗?) 3、指名几个学生汇报,并到在黑板上写出自己的例证。全班交流,验证猜想。 4、教师也举一例验证加法交换律和结合律在小数运算中也适用。 (二)在实际问题中验证猜想,展示预习成果。 师:刚才我们都是用计算的形式验证加法运算律在小数运算中也适用。下面我们在实际问题中再来验证刚才的猜想是否正确。 出示例4图:新圩小学上一届秋季运动会的比赛场景,这一个项目是四年级组男子4×50米接力赛。 课前老师已布置了预习任务:(1)从图中你了解到哪些数学信息?(2)通过例图中两位学生的对话,你明白了什么?(3)你是怎样计算他们可能的总成绩的?有不同的计算方法吗?(4)还有什么疑问吗?

C语言 长整数加减乘

长整数加减乘 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define NULL 0 typedef int Status; //--链表定义-- typedef struct DuLNode{ Status data; //数据域 struct DuLNode *next,*prior; //指针域 }DuLNode,*DuLinkList; int i; char str[400]; Status turn(Status &data){ for(int j=0;i>=0;--i,j++) { if(str[i]=='-'&&i==0)break; if(j%4==0)data=str[i]-'0'; if(j%4==1)data+=10*(str[i]-'0'); if(j%4==2)data+=100*(str[i]-'0'); if(j%4==3){data+=1000*(str[i]-'0');--i; if(i==-1||str[i]=='-')return OK;return 0;} if(i==0)return OK; } return OK; } Status Input(Status &data){ return turn(data); } Status ListCreate_L(DuLinkList &L,DuLinkList &dl){ DuLNode *r,*q; //r指向尾结点,q指向新开辟结点 L=(DuLNode*)malloc(sizeof(DuLNode)); if(L==NULL)exit(-1); r=L;q=L; for(;;){

两个任意长的整数的求和运算

软件综合课程设计两个任意长的整数的求和运算 进制的转换 2014 年6月

目录 一、问题陈述 二、需求分析 三、概要设计 四、详细设计 五、程序代码 六、运行结果与测试 七、设计体会与总结

两个任意长的整数的求和运算 一、问题陈述 设计一个程序实现两个任意长的整数的求和运算。 利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。 二、需求分析 1、本程序实现计算任意长的整数的加法运算. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。 2、本演示程序中,集合的元素限定为数字字符[‘0’~’9’],输入字符可以任意长,输入形式以“#”为结束标志,串中字符顺序不限,且允许出现重复字符。 3、利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以#结束,每四位一组。 三、概要设计 在此说明数据结构设计和关键的算法设计思想 Add()函数是实现该问题的主要函数即相加。 typedef struct et 定义双循环链表的存储结构. void setin(dtp *a) 读入数据存储在双链表中的函数; void print1(dtp *w,int len) 原样输出输入的数,略去结束符"#"; void print2(dtp a,int len) 输出运算结果,以每四位一个","样式; 四、详细设计 程序流程图

五、程序代码 #include using namespace std; #define null 0 typedef struct et {

人教版数学五年级下册整数加法运算定律推广到分数教学设计

《整数加法运算定律推广到分数》教学设计内容分析:《整数加法运算定律推广到分数》是新课标人教版第十册第五单元第7课 时的内容。是在学习了分数加减混合运算、整数加法运算定律推广到小数的基础上进 一步学习的。 教学目标: 1理解整数加法的交换律、结合律对分数加法同样适用。 2、会运用加法交换律、结合律进行分数加法的简便计算。 3、激发主动探究的学习欲望,感受学习数学的乐趣。 教学重点:会进行分数加法的简便计算。。 教学难点:灵活运用加法交换律、结合律进行分数加法的简便计算。 教学过程: 一、复习引入,揭示课题 1. 用简便方法计算下面各题,并说出简算的依据。 53 + 36+ 47 1.5+ 3.8 + 6.2 2. 学生独立完成,集体交流。(说出加法运算定律的字母表示形式。) 3. 教师板书: 加法交换律:a+ b= b+ a 加法结合律:(a+ b) + c= a+(b+ c) 4. 追问:式中的字母可以表示什么数? (预设:整数、小数、分数) 5. 揭示课题:我们知道加法交换律和结合律适用于整数和小数,是否也适用于分 数呢?这节课我们就一起来研究。(板书课题) 二、猜想验证,探索规律 1. 下面每组算式的左右两边有什么样的关系? _3 +_^g_2 +_3 ( _2 + 卫+_3°_2 十A +3 7 5 5 7 344344

2. 大胆猜想一下O 里应该填什么符号? 3. 说说你这样填的理由。 (预设:第一个算式左右两边的数都一样, 就是交换了位置,很像整数中的 加法交换律;第二个算式只是改变了加的顺序,很像加法结合律。 ) 4. 验证规律。 (学生动手计算验证,然后汇报结果相等的结论。教师随即 在0中板书出“=”) 二、 猜想验证,探索规律 5. 观察这些算式,你发现了什么? (预设1:整数加法的运算定律也可以在分数中使用。 预设2:整数加法的运算定律在分数中同样适用。) 6. 仅通过计算这两组题就下结论,有点为时过早。请你再举几个 分数加法的例子来验证一下,看看我们得出的结论是否正确。 7. 学生举例验证。 (学生组内验证,教师巡视指导,然后学生汇报通过验证得 到的结论。) 8?小结:整数加法的交换律和结合律对分数加法同样适用。利 用运算定律可以使一些分数计算变得简便。 三、 应用规律,巩固深化 1. 在。里填上合适的运算符号,在()里填上合适的数。 2. 怎样简便就怎样计算 4=2 1 4 + 5 丄+-3 3 + 8 4 +△ +3 2 ( 7 C 7 -7 +」+5 12 (5 C )2 () 6 / 3 7 7 ()() +? ()()

长整数的加法运算-数据结构与算法课程设计

题目:长整数的加法运算 学院:计算机科学与工程学院 专业:信息安全 姓名:农锦文 学号:1200360220 指导教师:张瑞霞 2014年10月18日

目录 引言 (4) 1、系统概述 (4) 2、系统分析 (5) 2.1需求分析 (5) 2.2系统功能 (5) 2.3开发环境 (5) 3、详细设计 (5) 3.1功能结构框图 (6) 3.2 软件设计 (6) 3.2.1 定义链表与接收数据输入 (6) 3.2.2长整数的加法运算 (8) 3.2.3显示长整数相加结果 (10) 4、所遇到的问题和分析解决 (10) 5、系统特色及关键技术 (11) 6、结论 (11) 参考文献 (12)

引言 随着计算机技术的发展,人们利用计算机开发了许许多多方便的,实用的应用软件,在信息化的现代社会里,人们依赖着很多的应用软件,这些软件在推进社会发展的同时,也丰富了人们的生活,然而,在开发过程中,由于计算机系统的局限性,在需要某些功能时,总会遇到困难。例如在开发某些工程项目时,有时需要对很大的数进行计算。但是计算机本身无法计算某些较大的数,所以我们有必要设计专门的算法对一些较大的数进行相应的计算,通过简化运算之后,对其他程序功能的编写能起到良好的促进作用,大大的减轻了程序员的负担。此次设计的程序将用于长整数的加法运算,程序运行时,将提示用户输入两个长整数,然后将两个长整数相加的结果输出。 1、系统概述 在该长整数加法运算系统中,我将定义双向循环链表来表示长整数,按照中国对长整数的表示方法,如199999999表示为1,9999,9999。双向循环链表数据域存储的是长整数的每4位。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。通过造双向循环链表,可以对长整数进行方便的存储,在对长整数进行数学运算时,也能通过方便的操作链表,从而对长整数进行需要的计算。 在实现该长整数加法运算的系统中,我将会编程实现以下功能。定义一个函数,用于接收长整数的输入,同时将长整数存储到双向循环链表当中,为了检验是否按预期要求进行存储,我还会编写一个函数,将双向循环链表中数据域的值打印出来。定义一个长整数相加的函数,实现两个长整数加法运算的功能,实际上是对双向循环链表进行操作,这里包括结点空间的申请,插入结点,修改指针所保存的值。 当两个长整数完成加法运算后,我会定义一个显示结果的函数,将它们相加的结果打印出来。一些较大的整数,在单纯的用计算机进行相加运算的时候可能会产生溢出现象,但该系统每次只对4位整数进行运算,避免了数据过大在计算时产生的溢出问题。

任意长整数的四则运算

1 题目介绍和功能要求 1.1 课程设计题目要求 【问题描述】: 设计一个实现任意长的整数进行加法运算的演示程序。 【题目容】: 利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的围是-(215- 1)~(215- 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 【基本要求】: (1)利用所学知识,设计相应的数据结构; (2)熟练运用开发环境; (3)完成软件的设计与编码; (4)熟练地掌握基本的调试方法。 1.2 题目分析 【需求分析】: (1)本程序实现计算任意长的整数的加法运算. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。 (2)本演示程序中,数字字符限定为[‘0’~‘9’]和字符‘,’,输入字符可以任意长,输入形式以“回车符”为结束标志,串中字符顺序不限,且允许出现重复字符。

(3)利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理,但不使用分隔符也不影响结果。 2 系统功能模块结构图 2.1 系统功能结构框图 图2.1 系统功能结构图 2.2主要模块的功能说明: (1)主调程序模块: void main() {

初始化; do{ 接受命令; 处理命令; }while(“命令”=”退出”) } (2)双向循环链表处理模块//cmplinklen.h //Creat.h //compare 说明:进行链表的存储和处理 (3)长整数运算模块//add.h // sub.h //imul.h //idiv.h 说明:对长整数进行四则运算 (4)界面模块//title.h //welcome.h 说明:控制系统运行操作界面 3 数据结构的设计及用法说明 3.1概要说明 为了实现上述功能,采取双向循环链表表示长整数,每个结点含一个整型变量,仅绝对值不超过9999的整数,整个链表用十进制数表示。利用头结点数据域的符号表示长整数的符号,相加过程不破坏两个操作数链表,对长整数位数不作上限。为此需要两个结构数据类型:双向循环链表和长整数。 3.2用法说明 3.2.1 双向循环链表的数据结构定义: typedef struct Node //双向循环链表结点

四年级加减法简便计算练习题

四年級運算定律與簡便計算練習題 一、運算定律 加法交換律:。字母表示為: 加法結合律:。字母表示為: 一個數連續減兩個數,可以先算兩個減數の和,再相減。字母表示為: 如果小括弧前面前面是減號,去掉小括弧,要改變括弧裏の運算符號。字母表示為: 二、加法の簡便計算 403+627+597 355+260+140+245 99+321+101 (725+139)+261 (245+138)+(62+155) 999+322+99 486+198 546+695 398+124 549+301 728+4052 637+2989 三、減法の簡便計算 635-99 486-197 782-498 1000-696 684-201 752-403 480-301 1000-505 527-145-55 496-172-228 375-168-75 402-192-18 469-128-169-72 1000-125-640-235 467+92-267 654+138-157-43 451-(251+130)865-(165+320)(678+249)-(158+149) 四、怎樣簡便就怎樣計算 325-64+75-36 345+197+658 645-180-245 1022-478-422 987-(287+135)

672-36+64 36+64-36+64 564-298 564+298 382+165+35-82 487-287-139-61 500-257-34-143 2000-368-132 568-(68+178) 155+256+45-98 514+189-214 369-256+156 700-201 1000-821 512+(373—212)228+(72+189)409-(230-91)897-72-28 897-72+28 四、應用題。 1、雄城商場1—4季度分別售出冰箱269臺、67臺、331臺和233臺。雄城商場平均每月售出冰箱多少臺? 2、第三小組六個隊員の身高分別是128釐米、136釐米、140釐米、132釐米、124釐米、127釐米。他們の平均身高是多少? 3、一本書共有326頁,小明第一天看了65頁,第二天看了35頁,還剩多少頁沒有看? 4、黃山旅遊景區週末上午迎來1398名中國遊客,457名外國遊客,中午離開了257名中國遊客、198名外國遊客,景區裏還剩下多少遊客?

数学人教版五年级下册《整数加法运算定律推广到分数加法》教学设计

《整数加法运算定律推广到分数加法》教学设计 教学内容:人教版五年级下册教材第98页例2。 教学目标: 1.理解整数加法的交换律、结合律对分数加法同样适用。 2.会运用加法交换律、结合律进行分数加法的简便计算。 3.激发主动探究的学习欲望,感受学习数学的乐趣。 教学重点:会进行分数加法的简便计算。 教学难点:灵活运用加法交换律、结合律进行分数加法的简 便计算。 一、复习导入 1.计算下面各题,看谁算得又对又快。 13+75+25+87 1.5+3.8+6.2 12-3.5-6.5 2.复习用字母表示整数加减法的运算定律。 学生叙述,教师用课件出示: 加法交换律:a+b=b+a 加法结合律:(a+b)+c=a+(b+c) 减法性质:a-b-c=a-(b+c) 二、新知探究 教学例2 课件出示例2的两组算式 例2.计算并在○里填运算符号。

(1)学生先计算,得出每组算式左右两边结果相等的结论。 (2)让学生观察左右数的特点。 (3)引导学生归纳得出:整数加法的交换律.结合律对分数加法同样适用。 (4)揭示课题:这就是我们今天要学习的整数运算定律推广到分数 (5)对应练习: 1.在 里填上合适的数。 (6)利用运算定律计算:(指名学生回答,教师板演) (7)上述计算中,同学们运用了加法的结合律,把同分7352+5273 +434132++)()(434132++○ ○ 12712165++32517231++++=+5454107)(++=++8392858392

母分数 与 , 与 结合起来,很快得出了结果。 (8)对应练习:完成教材第98页“做一做”第二题。(学生汇报,教师播放多媒体) 三、巩固练习(教师播放课件上的题,学生练习) 四、课堂小结:今天的学习,你学到了什么? 五、布置作业:练习二十五5题,7题。 六、板书设计 整数运算定律推广到分数 例2: 12112731325273+7352+434132++)()(434132++12712165++12712165++=)(12712165++=6 465+=23=32517231+++51723231+++=)(35735101++=35171=○ ○

加法与减法的简便运算

一、课前热身 数字谜 二、知识回顾 加法交换律:两个数相加,交换加数的位置,它们的和不变。即a+b=b+a 加法结合律:三个数相加,先把前两个数相加,再加上第三个数;或者,先把后两个数相加,再与第一个数相加,它们的和不变。即 a+b+c=(a+b)+c=a+(b+c) 一般地,多个数(三个以上)相加,可先对其中几个数相加,再与其它数相加。 (1)在连减或加、减混合运算中,如果算式中没有括号,那么计算时可以 带着运算符号“搬家”。例如, a-b-c=a-c-b,a-b+c=a+c-b, 其中a,b,c各表示一数。 (2)在加、减法混合运算中,去括号时:如果括号前面是“+”号,那么 去掉括号后,括号内的数的运算符号不变;如果括号前面是“-”号,那 么去掉括号后,括号内的数的运算符号“+”变为“-”,“-”变为“+”。 例如, a+(b-c)=a+b-c, a-(b+c)=a-b-c, a-(b-c)=a-b+c。

(3)在加、减法混合运算中,添括号时:如果添加的括号前面是“+”号, 那么括号内的数的原运算符号不变;如果添加的括号前面是“-”号,那 么括号内的数的原运算符号“+”变为“-”,“-”变为“+”。例如, a+b-c=a+(b-c), a-b+c=a-(b-c), a-b-c=a-(b+c)。 灵活运用这些性质,可得减法或加、减法混合计算的一些简便方法。 【回顾复习】 一、填空: 1.一个加数=()-另一个加数被减数=差+()()=被减数-差加数+()=和 2.求几个()的简便运算,叫做乘法. 3.已知两个因数的和与其中(),求()的运算,叫做除法,除法是乘法的(). 4.已知两个加数的和与其中(),求()的运算,叫做减法,减法是加法的(). 5.()÷除数=商一个因数=()÷()除数=被除数÷()()÷()=被除 【综合练习】 一、口算16% 28×3=18×50=6×500=7+8÷2= 24×5=70×130=420÷7=7+3×4= 640÷40=360÷9=250×8=7×4×25= 50×7=870÷10=60÷30=9×0+3=

相关主题
文本预览
相关文档 最新文档