16.小劉編寫了一個求序列所有子序列和的程序。程序能夠輸 出所有的子序列的和,同時輸出最大的子序列和。如序列中有三個元素 a(1),a(2),a(3),其子序列包括“a(1),a(2)”,“a(1),a(2),a(3)”,“a(2),a(3)”。 程序運行界面如圖所示。 實現上述功能的VB程序如下(數組每一項的值都為[-100,100]內的隨機整數),請將程序代碼補充完整。 Private Sub Command1_Click ( ) Dim a(1To10)AsInteger Dim b(10)AsInteger Dim i As Integer,j As Integer Dim k As Integer,max As Integer Randomize max=-32768 List1.Clear List2.Clear b(0)=0 Fori=1To10 a(i)=
17.在一個文檔中,每行包含一個字符串。現使用如下規則對其壓縮:壓縮時,對于每個字符串求其與前一字符串的公共前綴,然后使用公共前綴的長度和字符串的剩余部分(以空格隔開)表示該字符串,每個空格和字符都會占用一個字節空間。圖a所示為該壓縮規則示意圖。小明為此編寫了VB程序,功能如下:運行程序時,在列表框List1中顯示原字符串內容,單擊“壓縮”按鈕Command1,在列表框List2中顯示壓縮后字符串,并在標簽Label2中顯示壓縮后容量。程序運行界面如圖b所示。 實現上述功能的 VB 代碼如下,但橫線處代碼有錯,請改正。 Dim word(3000)As String,pre(3000)As String Const n=2000 Private Sub Form_Load ( ) '該過程的作用是從數據庫讀取 n 個單詞,按字典順序存儲在數組 word 中,并在 Label1輸出單詞數量和容量 '代碼略 End Sub Private Sub Command1_Click ( ) Dim conp As Integer'存儲壓縮后的容量 Dim f As Boolean,m As Integer,k As Integer'k 存儲公共前綴的長度 conp=0 For i=1To n k=0 If i=1Then f=False Else f=True '(1) Do While k<m And f=True If Mid(word(i),1,k+1)=Mid(word(i-1),1,k+1)Then ′(2) Else f=False End If Loop pre(i)=CStr(k)+““+Mid(word(i),k+1,Len(word(i))) 'Cstr ( )函數能夠將數字類型的值轉換為字符類型的值,并卻掉前導空格。 List2.AddItem pre(i) '(3) Next i Label2.Caption=“壓縮后容量為“+Str(conp)+“字節“ End Sub