16.小張編寫一個 VB 程序實現以下功能:隨機產生 10 個 1 到 20 之間的不重復的 整數,在列表框 list1 中顯示(存儲在數組 a 中),單擊“排序”按鈕 Command1,在列表框 list2 中顯示升序排序后結果。程序運行界面如圖所示。 實現上述功能的 VB 程序如下,但加框處代碼有錯,請改正。 Const n=10 Dim a(1To n) As Integer Private Sub Form_Load ( ) Dim i As Integer,j As Integer Randomize a(1)=Int(Rnd
*20)+1i=2 Do While i<=n a(i)=Int(Rnd
*20)+1 For j=1To i-1
If a(j)=a(i) (1) Next j i=i+1 Loop For i=1To n List1.AddItem Str(i)+““+Str(a(i)) Next i End Sub Private Sub Command1_Click
Dim i As Integer,j As Integer For i=1To n-1 For j=n To i+1Step-1 IfThen(2) a(j)=a(j)+a(j-1):a(j-1)=a(j)-a(j-1):a(j)=a(j)-a(j-1)End If Next j Next i For i=1To n List2.AddItem Str(i)+““+Str(a(i)) Next i End Sub
17.用 VB 編寫的英文單詞字頻統計程序如第 17 題圖所示,在文本框 Text1 中 輸入文章,單擊“統計”按鈕 Command1,在列表框 List1 輸出單詞與頻次,在標簽 Label2 中輸出頻次最高的單詞,如頻次最高的單詞有多個,則輸出時用逗號分隔。算法如下: (1)將文本框 Text1 中的文章保存到字符串變量 s 中。 (2)從左往右掃描字符串 s,用字符串 word 存儲文章中依次出現的單詞,將新出現的單 詞自動加入單詞隊列 dic(i)中,單詞出現的頻次記錄到對應的 num(i)中。如下方法掃描: ①從左往右掃描,當掃描到第 i 個字符時,如果是字母,繼續掃描,否則,跳轉到②,直 至掃描結束; ②將 b 到 i-1 組成一個單詞 word,查詢單詞字典 dic 判斷是否存在,如果不存在,將新 單詞插入單詞字字典尾部 dic(k),并且記錄單詞頻次 num(k)為 1,如果 dic 字典中存在單詞 word,那么該單詞對應頻次增加 1,再跳轉到①。 (3)在列表框 List1 中依次輸出單詞與頻次,在標簽 Label2 中輸出頻次最高的單詞。 (1)實現上述功能的 VB 程序如下,請在橫線處填入合適的代碼。 Private Sub Command1_Click ( ) Dim dic(1To 10000)As String‘存儲自建單詞字典 Dim num(1To 10000)As Integer'存儲單詞出現的頻次 Dim word As String'存儲每次掃描的單詞 Dim c As String,s As String Dim i As Integer,j As Integer,di As Integer,k As Integer Dim b As Integer,slen As Integer Dim nummax As Integer'記錄最高單詞頻次 Dim result As String'存儲出現頻率最高的單詞串 s=Text1.Text slen=Len(s) j=0'存儲每個單詞的長度 k=1'k-1 為當前單詞字典長度 b=1'存儲每個單詞的起始位置 nummax=0 For i=1To 10000’初始化單詞字典頻次 num(i)=0 Next i i=1 Do While i<=slen c=Mid(s,i,1) If c>=“a“And c<=“z“Or c>=“A“And c<=“Z“Then j=j+1 Else If j<>0Then word=LCase( ①
)‘將單詞統一為小寫’ di=1 Do While word<>dic(di) And di<k di=di+1 Loop If di=k Then‘單詞字典插入新單詞 dic(k)=word num(k)=1 k=k+1 Else ②
‘單詞在單詞字典中已存在,對應頻次加 1’End If If num(di)>nummax Then nummax=num(di) j=0 End If b=i+1 End If i=i+1 Loop result=““ For j=1To k-1 List1.AddItem dic(j)+““+Str(num(j)) If ③
Then If result=““Then result=result+dic(j) Else result=result+“,“+dic(j)'如出現頻率最高的單詞有多個,則用逗號分隔 End If End If Next j Label2.Caption=“出現頻率最高的單詞是:“+result End Sub (2)根據本題算法,如第 17 題圖所示,若在 Text1 中將文章最后一行“strength you will。” 改為“strength you will3”,單詞統計結果