16.數組a中有50個正整數,已按升序排列.在文本框Text1中輸入一個正整數m,尋找數組a中是否有一對數的和等于給定的數m.若存在和為m的數對,輸出該數對包含的兩個整數,小的在前,大的在后.若有多個數對滿足條件,則輸出最先找到的數對.若找不到符合要求的數對,則輸出“沒有符合條件的數對”.小吳為此編寫了VB程序,代碼如下,但加框處代碼有錯,請改正. Dim a(1 To 50)As Integer Const n=50 Private Sub Command1_Click( ) Dim m As Integer,left As Integer,right As Interger,mid As Integer Dim flag As Boolean flag=False:m=Val(Text1.Text) For i=1 To n-1 (1) right=n Do While (2) mid=(left+right)\2 If a(i)+a(mid)<m Then left=mid+1 ElseIf a(i)+a(mid)>m Then right=mid-1 Else List1.AddItem Str(a(i)) &““&Str(a(mid)) flag=True End If Loop Next i If Not flag Then List1.AddItem“沒有符合條件的數對“ End Sub.
17.正整數n的階乘,在數學中定義為:n!=1×2×3×…×n,如:3!=1×2×3,現在輸入一個正整數n(n<=30),計算出1~n中的每一個整數的階乘的精確結果.小北按照上述要求,設計一個求前n個正整數的階乘問題的VB程序,功能如下:在程序中他采用加法代替乘法的方法來計算階乘,如:3!=2!×3=2!+2!+2!.程序啟動后在文本框Text1中輸入n的值,單擊“計算”按鈕Command1,在列表框List1中輸出前n個數的階乘.當n=10時,程序運行效果如圖所示: 實現上述功能的VB程序如下請在橫線處填入合適的代碼. Const maxn=80 Dim i As Integer,j As Integer,k As Integer,n As Interger,r As Interger Dim a(1 To maxn)As Integer,b(1 To maxn)As Integer,s As String Private Sub Form_Load( ) List1.Clear For i=1 To maxn a(i)=0 Next i End Sub Sub array_sum(j As Integer)'該過程用于計算 j!,并將j!的精確值按位保存在數組a中 For k=1 To j-1 For i=1 To maxn r=
If r>=10 Then
=a(i+1)+1 a(i)=r Mod 10 Next i Next k End Sub Private Sub Command1_Click( ) n=Val(Text1.Text) a(1)=1 List1.AddItem“1!=“&Str(a(1)) For j=2 To n For i=1 To maxn b(i)=a(i) Next i s=““ Call array_sum(j)'該語句用于調用自定義過程 array_sum s=s+Str(j)+“!=“ k=maxn Do While a(k)=0
Loop For i=k To 1 step-1 s=s+Str(a(i)) Next i List1.AddItem s Next j End Sub.