第二课多精度数值处理课题:多精度数值的处理目标:知识目标:多精度值的加、减、乘、除能力目标:多精度值的处理,优化
重点:多精度的加、减、乘难点:进位与借位处理板书示意:1)输入两个正整数,求它们的和2)输入两个正整数,求它们的差3)输入两个正整数,求它们的积4)输入两个正整数,求它们的商授课过程:所谓多精度值处理,就是在对给定的数据范围,用语言本身提供的数据类型无法直接进行处理(主要指加减乘除运算),而需要采用特殊的处理办法进行
看看下面的例子
例1从键盘读入两个正整数,求它们的和
分析:从键盘读入两个数到两个变量中,然后用赋值语句求它们的和,输出
但是,我们知道,在pascal语言中任何数据类型都有一定的表示范围
而当两个被加数据大时,上述算法显然不能求出精确解,因此我们需要寻求另外一种方法
在读小学时,我们做加法都采用竖式方法,如图1
这样,我们方便写出两个整数相加的算法
如果我们用数组A、B分别存储加数和被加数,用数组C存储结果
则上例有856+2551111图1A3A2A1+B3B2B1C4C3C2C1图2A[1]=6,A[2]=5,A[3]=8,B[1]=5,B[2]=5,B[3]=2,C[4]=1,C[3]=1,C[2]=1,C[1]=1,两数相加如图2所示
由上图可以看出:C[i]:=A[i]+B[i];ifC[i]>10thenbeginC[i]:=C[i]mod10;C[i+1]:=C[i+1]+1end;因此,算法描述如下:procedureadd(a,b;varc);{a,b,c都为数组,a存储被加数,b存储加数,c存储结果}vari,x:integer;begini:=1while(i0)or(i