内容正文:
专题 高精度运算
★ 高精度加减法
※ 加法
1、(浙南名校联盟)高精度运算,是指参与运算的数(加数,减数,因子.…)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算,此时就要用到高精度算法。小明为了计算两个很大的数相加,设计了如下程序,具体代码及运行部分界面如下:
Private Sub Command1_Click()
Dim a(1 To 10) As Integer,b(1 To 10) As Integer
Dim c(1 To 10) As Integer,t As Integer, kAs Integer
Dim s1 As String,s2 As String
s1=Text1. Text:s2= Text2. Text
Text3. Text=""
If Len(sl)> Len(s2) Then k=Len(s1) Else k=Len(s2)
If k Mod4 < > 0 Then
①
E1se
p=k\4
End If
s1=Space(p*4-Len(s1))+s1
s2=Space(p*4-Len(s2))+s2
For i=1 To p
a(i)=Val(Mid(s1,(p-i)*4+1,4))
b(i)=val(Mid(s2,(p-i)*4+1,4))
Next i
t=0
For i=1 To p
②
t=c(i)\10000
c(i)=c(i) Mod 10000
Next i
If t>0 Then Text3. Text=Str(t)
For i=p To 2 Step-1
Text3. Text= ③
Next i
Text3. Text=Text3. Text+CStr(c(1))
End Sub
Function gs(x As Integer)As String
Dim n As Integer
y=CStr(x)
For i=1 To 4-Len(y)
y="0"+y
Next i
gs=y
End Function
(1)该程序计算得到的结果最多是 位数。
(2)在①②③处填写适当的语句来实现上述功能。
2、(诸暨模拟)斐波那契数列,又称黄金分割数列,指的是这样的一个数列:1、1、2、3、5、8、13、21、34、55.89、144、233、377、…。这个数列从第3项开始,每一项都等于前两项之和,即F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n=3)。当计算到第50项时,数据为12586269025,此时就无法用普通数据类型表示位数这么多的计算结果,所以可以采用高精度加法。即运用数组,用程序模拟列竖式计算的过程。若以100位及以内的两个正整数进行高精度加法计算的一般算法如下:
(1)将前一个整数各位上的数字按照从低位到高位的顺序依次存入数组a(1)、a(2)、a(3)、…、a(100)中,将后一个整数各位上的数字按照从低位到高位的顺序依次存入数组b(1)、b(2)、
b(3)、…、b(100)中;
(2)按照从低位到高位的顺序,将两个整数各位数值进行逐位相加计算,a(1)和b(1)相加,结果存入c(1)中,a(2)和b(2)相加,结果存入c(2)中…;
(3)对数组c中的计算结果进行从低位到高位的进位处理;
(4)按照从高位到低位的顺序输出数组c中的计算结果。
问题:为实现上述功能,代码如下,将划线处的代码补充完整。
Private Sub Command1_Click()
Const t=1000
Dim a(t)As Integer,b(t)As Integer
Dim c(t)As Integer
n=Val(Text1.Text)
Text2.Text=""
For i=1 To t
a(i)=0:b(i)=0:c(i)=0
Next i
a(1)=1
b(1)=1
For i=3 To n
For j=1To t
c(j)= ①
Next j
For j=2 To t
c(j)= ②
c(j-1)=c(j-1)Mod10
Next j
For j=1 To t
a(j)=b(j):b(j)=c(j)
c(j)=0
Next j
Next i
i=t
Do While b(i)=0
③
Loop
Do While i>0
Text2. Text=Text2. Text & b(i)
i=i-1
Loop
End Sub ①a(j)+b(j) ②c(j)+c(j-1)\10 ③i=i-1
3、(2019年11月宁波十校模拟15)编写一个计算25位内的