16.小強想用選擇排序算法對n個數據元素進行降序排序,并且用Do While循環語句來實現編程.該程序的功能如下:單擊“排序”按鈕Command1,程序對列表框List1中顯示的n個整數進行降序排序,并在列表框List2中顯示排序結果.程序運行效果如圖所示. 該程序中實現選擇排序功能的VB代碼如下,但加框處代碼有錯,請改正. Dim a(1 To 100)As Integer,i As Integer,j As Integer,t As Integer Dim object As Integer Const n=100
Private Sub Command1_Click( ?。?br /> i=0 Do While '(1) i=i+1 object=i j=object+1 Do While j<=n If a(object)<a(j) Then object=j '(2) Loop If object<>i Then t=a(object):a(object)=a(i):a(i)=t End If Loop For i=i To n List2.AddItem Str(a(i)) Next i End Sub.
17.當計算機程序中無法用普通數據類型表示位數較多的乘數和計算結果時,就需要采用高精度乘法.如,當兩個各有20位數字的整數相乘時,就無法用長整型(Long)數據類型來表示.高精度乘法運算就是運用數組,用程序模擬列豎式計算的過程.兩個正整數進行高精度乘法計算的一般算法如下: (1)將第一個整數各位上的數字按照從低位到高位的順序依次存入數組a(1)、a(2)、…、a(La)中,將另一個整數各位上的數字按照從低位到高位的順序依次存入數組b(1)、b(2)、…、b(Lb)中.其中,La表示第一個整數的位數,Lb表示第二個整數的位數; (2)按照從低位到高位的順序,將兩個整數各位數值進行逐位乘法計算(第一輪先讓b(1)依次乘以a(1)、a(2)、…、a(La),第二輪再讓b(2)依次乘以a(1)、a(2)、…、a(La),依次進行),每位的乘法結果也按照低位到高位的順序依次存入數組ans(1)、ans(2)、ans(3)…中; (3)對數組ans中的計算結果進行低位到高位的進位處理; (4)統計數組ans中實際計算結果的有效數值位數,并將位數值存入變量length; (5)按照高位到低位的順序輸出數組ans中的計算結果. 小強按照上述方法設計了一個兩數進行高精度乘法計算的VB程序,功能如下:在文本框Text1和Text2中依次輸入兩個整數,單擊“計算”按鈕Command1,程序進行高精度乘法計算,并在標簽Label4中輸出計算結果.下面信息顯示了進行高精度乘法計算的主要過程(假設輸入的兩個整數分別為“123”和“45”); 程序運行效果如圖3所示. 實現上述功能的VB程序如下: (1)請在橫線處填入合適代碼. Dim a(1 To 30)As Integer,b(1 To 30)As Integer,ans(1 To 60)As Integer Dim La As Integer,Lb As Integer,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的值為