16.雙調序列:指的是有n個整數進行排序,在序列中第一個數是n個數當中最大數,第二個數是n個數中最小數,第三個數是n個數中的第二大數,第四個是n個數中的第二小數……取過的數字不能再取,依此類推,直到結束。 小明根據上述概念制作了VB應用程序,功能如下:程序運行后,點擊“生成”按鈕Command1隨機生成10個不重復的[0,99]內的整數,列表框List1中顯示排序之前數據;單擊“排序”按鈕Command2,在列表框List2中顯示這些數據的雙調序列結果。其程序界面如圖所示。 實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。 Const n=10 Dim a(1To n) As Integer Dim b(0To 99)As Integer Private Sub Command1_Click( ) ‘隨機生成10個不重復的[0,99]之間的整數,存儲在a數組中,代碼略。 End Sub Private Sub Command2_Click ( ) Dim i As Integer,j As Integer,k As Integer k=0 For i=1To n '①
Next i For j=0To 99 If b(j)=1Then k=k+1 a(k)=j End If Next j For i=1To n\2 List2.AddItem '②
(已知“A”的ASCII碼值為65) (2)請在橫線處填入合適代碼: Dim a(1To 24)As Integer,k As Integer Private Sub Command1_Click ( ) Dim mw As String,ch1As Integer,ch2As String,ch3As String,s As String Dim m As Integer,i As Integer,j As Integer s=““ mw=Text1.Text‘mw存儲明文字符串 For i=1To Len(mw) Step 3 For j=1To 24‘初始化數組,用于存儲三個字節的二進制數 a(j)=0 Next j k=1 ch1=Asc(Mid(mw,i,1)) ch2=Asc(Mid(mw,i+1,1)) ch3=Asc(Mid(mw,i+2,1)) Convert (ch1)‘調用自定義過程Convert Convert (ch2) Convert (ch3) For j=1To 24‘逐位取反 ①
Next j For j=1To 4 m=0 For p=②
To j*6‘每6位一組進行權值相加 m=m*2+a(p) Next p s=s & m ‘&連接運算符,連接數字和字符串時,會將數字自動轉換為字符串 Next j Next i Text2.Text=s End Sub Sub Convert(x As Integer) Dim i As Integer,j As Integer Do While x>0 a(k)=x Mod 2 x=x\2 k=k+1 Loop j=③