16.小李編寫了一個(gè)分紅包的VB程度,對(duì)于m元分成n(n<=20)個(gè)紅包的算法如下: (1)先根據(jù)當(dāng)前金額與待分配紅包數(shù)計(jì)算每份紅包的平均金額aver (2)產(chǎn)生一個(gè)[0.01,aver*2]之間的隨機(jī)數(shù)作為第i個(gè)紅包金額a(i) (3)將總金額減去a(i)后重復(fù)(1) 上述算法直到分配到n-1份,最后一份直接給a(n),運(yùn)行界面如圖所示: 如總金額為200,紅包個(gè)數(shù)為10個(gè),則第1個(gè)紅包在0.01到20之間產(chǎn)生,若產(chǎn)生的第1個(gè)紅包為17.45,則第2次的紅包在0.01到(200-17.45)/9*2之間產(chǎn)生.請(qǐng)?jiān)谙铝谐绦虻臋M線處填上正確的代碼,以實(shí)現(xiàn)上述功能. Dim a(1 To 20)As Single Private Sub Command1_Click( ?。?br /> Dim n As Integer,m As Single Dim aver As Single'平均值 n=Val(Text1.Text)'紅包總數(shù) 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程序以實(shí)現(xiàn)上述功能,請(qǐng)完善橫線處代碼. Function D2B(x As Integer) As String'將x轉(zhuǎn)換成二進(jìn)制字符 Dim s As String,i As Integer s=““ Do While x>0 i=x Mod 2 s=CStr(i) & s'CStr( ?。┖瘮?shù)的作用是將數(shù)值轉(zhuǎn)換為不帶空格的數(shù)字字符串 x=x\2 Loop s=“00000000“+s D2B=
'返回8位二進(jìn)制數(shù) End Function Private Sub Command1_Click( ) Dim y As String,a As String'y為原文,m為對(duì)應(yīng)的密文 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位二進(jìn)制數(shù)對(duì)應(yīng)的十進(jìn)制值 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)