16.小李編寫了一個分紅包的VB程度,對于m元分成n(n<=20)個紅包的算法如下: (1)先根據當前金額與待分配紅包數計算每份紅包的平均金額aver (2)產生一個[0.01,aver*2]之間的隨機數作為第i個紅包金額a(i) (3)將總金額減去a(i)后重復(1) 上述算法直到分配到n-1份,最后一份直接給a(n),運行界面如圖所示: 如總金額為200,紅包個數為10個,則第1個紅包在0.01到20之間產生,若產生的第1個紅包為17.45,則第2次的紅包在0.01到(200-17.45)/9*2之間產生.請在下列程序的橫線處填上正確的代碼,以實現上述功能. Dim a(1 To 20)As Single Private Sub Command1_Click( ) Dim n As Integer,m As Single Dim aver As Single'平均值 n=Val(Text1.Text)'紅包總數 m=Val(Text2.Text)'總金額
Randomize For i=1 To n-1 a(i)=Rnd*(aver*2)+0.01 a(i)=Int(a(i)*100+0.5)/100 m=m-a(i)
Next i
List1.Clear For i=1 To n List1.AddItem Str(a(i)) Next i End Sub.
(2)小張編寫了如下VB程序以實現上述功能,請完善橫線處代碼. Function D2B(x As Integer) As String'將x轉換成二進制字符 Dim s As String,i As Integer s=““ Do While x>0 i=x Mod 2 s=CStr(i) & s'CStr( )函數的作用是將數值轉換為不帶空格的數字字符串 x=x\2 Loop s=“00000000“+s D2B=
'返回8位二進制數 End Function Private Sub Command1_Click( ) Dim y As String,a As String'y為原文,m為對應的密文 Dim b As String,k As String Dim a(3)As String,i As Integer,j As Integer Dim r As String Dim q As Integer'每2位二進制數對應的十進制值 m=““ a(0)=“B“=a(1)=“D“:a(2)=“F“:a(3)=“2“ y=Text1.Text For i=1 To Len(y) k=Mid(y,i,1) b=D2B(Asc(k)) For j=1 To 8 Step 2 r=Mid(b,j,2)