C++编程《第12课 高精度加减法》教学设计.docxVIP

  • 1
  • 0
  • 约4.38千字
  • 约 7页
  • 2026-03-10 发布于广西
  • 举报

C++编程《第12课 高精度加减法》教学设计.docx

PAGE

PAGE1

高精度加减法

教学目标

1.知识与技能

学会高精度加法的基本使用

学会高精度减法的基本使用.

2.过程与方法:

学习流程:讲授——模仿——练习

通过课堂练习,巩固课堂内容。

教学重点、难点

【重点】

高精度数的存储

高精度加法算法过程

高精度数大小比较原理

高精度减法算法过程

【难点】

答案位数的精确计算控制

进位处理方法,单独用变量存储进位的处理方法

课时安排

课时安排:120分钟

四、上课准备

课程相关ppt、白板、白板笔、积分卡

课前检查电脑、投影仪、网络是否有故障,及时修复。

五、教学活动

活动时长

教学活动

注意事项

课前准备

老师准备学生电脑,保证电脑能正常使用;打开投影仪,打开上课课件,以最饱满的热情迎接学生!

提前10分钟准备

开场白

欢迎各位同学回到吉码信息学课堂。

引入

圆周率π的小数部分有多少位大家知道吗?

无限位!因为π是一个无理数,已经被人们证明过,这还是用微积分证明的。用普通的代数方法无法证明π是一个无限不循环的小数,因为它在本质上是一个超越数,不是一个代数数。

现在人们已经把π计算到了几十万亿位,当然这种计算必须借助超级计算机,而且必须有好的算法。

我们用C++语言来进行计算,目前为止接触到的精度最高的浮点数精度是双精度浮点数,大概也就只有15到16位有效数字。那么几十万亿位的精度怎么计算得来的呢?这就涉及到高精度计算了。高精度计算,在科学计算中常常遇到。我们今天所说的高精度运算,指的是整数高精度运算。当我们要表示一个超过20位的整数,并且用它来做计算的时候,正要采用高精度计算的算法。其主要原则是,把每一个数位上的数字存储在数组内,然后模拟竖式加减或运用别的算法来进行计算,最后得到的也是存储在数组内的数字。因为数组可以开的很大,我们能够表示的数位也会大大突破64位二进制小数的限制。

学习内容(1)

高精度数计算,本质上是一种模拟,我们把数字存储到数组内以后,就要模拟竖式运算的过程来计算,得到结果的各个数位上的数字。这个运算过程是模拟手算过程进行的,所以属于模拟算法的范畴。这里面并没有高深的数学道理,只需要模拟手算过程即可。

在此之前,我们需要介绍1个结论:

把数字拆分为一个一个的数位,然后存储在整数数组里,最好是“倒过来”存储,这样做高精度运算比顺序存储的数方便很多。

举个例子:

我们计算123456+123时,先把两个数字存储在数组里,如果顺序从高位到低位存储,那么在计算时是这样的:

123456

+123

我们可以看到,数组的第一个位置,存储的是最高位,但参与运算的两个数字的最高位却不是相同的数位,列竖式时应该低位对齐。

有同学说,我们把数组的最末位对齐就好了呀。但是最末位是哪一位,需要我们预先计算数位的位数才可以知道。而且,这样做加法和减法还算简单,但是做乘法时,就真的不方便了。因为乘法运算的进位很多,我们需要往前添加数位,但数组的第1个位置前却没有位置了,所以进位也是一个麻烦。所以,人们想了个办法,那就是倒过来存储数字,这样,往前做进位,就变为往后面添加数位,这就方便了。而且,这样还有个很方便的地方,那就是数组的第1个位置永远是最低位,把对应下标的数位对齐就可以直接运算了。那么,我们上面说的加法就是这样做的:

654321

+ 321

975321

结果是123579,把直接相加得到的结果逆序输出即可。

因此,我们做高精度数的运算,首先就要把数字“逆序转存”到整数数组中。

【提问】整型变量没有能存储这么多位数的,怎么进行输入?

【答案】用字符串输入呀!然后逆序转存也方便!

ppt6大整数加法

首先,大家实现输入

何输入一个大整数,并逆序转存在整数数组中?

1、用字符串进行输入。

stringA,B;

cinAB;

直接就输入了。

2、逆序转存。

举个例子:把大整数A,逆序转存到数组a中,并按照逆序的方式输出每一个数位,空格隔开每个数位。用数组a的第0位置表示数字的长度。

a[0]=A.size();

for(inti=a[0]-1;i=0;i--){a[l-i]=A[i]-48;}

for(inti=1;i=a[0];i++)couta[i];

教师把程序框架搭好,以上for循环的循环体留给学生来填写(即上面大括号内的部分)。

【提问】如果我们输入两个大整数,进行整数加法,保证没有进位,应该如何写程序?

留时间给同学们独立完成程序,教师从旁辅助。注意逆序转存,一定要区别数字字符和数字。存为整数时一定要存数字,注意处理的方法,就是直接减去数字0的编码。

如果存在进位,应该如何处理呢?

我们假设每一个数位都有进位(没有进位的按照进位=0处理即可),那么答案c的第i位其

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档