试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:普通

浙江省高中信息技术 高精度计算问题练习

当计算机程序中无法用普通数据类型表示位数较多的乘数和计算结果时,就需要采用高精度乘法。如,当两个各有20位数字的整数相乘时,就无法用长整型(Long)数据类型来表示。高精度乘法运算就是运用数组,用程序模拟列竖式计算的过程。两个正整数进行高精度乘法计算的一般算法如下:

⑴将第一个整数各位上的数字按照从低位到高位的顺序依次存入数组a(1)、a(2)、…、a(La)中,将另一个整数各位上的数字按照从低位到高位的顺序依次存入数组b(1)、b(2)、…、b(Lb)中。其中,La表示第一个整数的位数,Lb表示第二个整数的位数;

⑵按照从低位到高位的顺序,将两个整数各位数值进行逐位乘法计算(第一轮先让b(1)依次乘a(1)、a(2)…a(La),第二轮再让b(2)依次乘a(1)、a(2)、…、a(La),依次进行),每位的乘法结果也按照低位到高位的顺序依次存入数组ans(1)、ans(2)、ans(3)中;

⑶对数组ans中的计算结果进行从低位到高位的进位处理;

⑷统计数组ans中实际计算结果的有效数值位数,并将位数值存入变量length;

⑸按照高位到低位的顺序输出数组ans中的计算结果。

小明按照上述方法设计了一个两数进行高精度乘法计算的VB程序,功能如下:在文本框Text1和Text2中依次输入两个整数,单击“计算”按钮Command1,程序进行高精度乘法计算,并在标签Label4中输出计算结果。

实现上述功能的VB程序如下:

(1)、请在划线处填入合适代码。

Dim a(1 To 30) As Integer, b(1 To 30) As Integer

Dim ans(1 To 60) As Integer

Dim La As Integer, Lb As Integer

Dim length As Integer

Private Sub Command1_Click()

Dim i As Integer, j As Integer, t As Integer, temp As String

‘将两个乘数(正整数)各数位上的数字按照上述算法依次存入数组a和b,每个正整数位数分别保存到变量La和Lb;将保存结果的数组ans(i)值初始化为零(该部分程序代码略)

For i = 1 To Lb    ‘按低位到高位的顺序进行列竖式的逐位乘法

 For j = 1 To La

  ans(i + j - 1) = + b(i) * a(j) 

 Next j

Next i

For i = 1 To La + Lb    ‘对计算结果进行进位处理

 ans(i+1) =ans(i +1)+ ans(i) \ 10

 ans(i) =

Next i

length = La + Lb    ‘最多位数

Do While ans (length) = 0    ‘计算实际位数

 length = length - 1

Loop

For i =To 1 Step -1

 Label4.Caption = Label4.Caption + Str(ans(i))

Next i

End Sub

(2)、根据本题算法,若输入的两个整数分别为5125和18,则在输出乘法计算结果时,变量length的值为
返回首页

试题篮