16.小張編寫一個(gè) VB 程序?qū)崿F(xiàn)以下功能:隨機(jī)產(chǎn)生 10 個(gè) 1 到 20 之間的不重復(fù)的 整數(shù),在列表框 list1 中顯示(存儲(chǔ)在數(shù)組 a 中),單擊“排序”按鈕 Command1,在列表框 list2 中顯示升序排序后結(jié)果。程序運(yùn)行界面如圖所示。 實(shí)現(xiàn)上述功能的 VB 程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。 Const n=10 Dim a(1To n) As Integer Private Sub Form_Load ( ?。?nbsp;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 編寫的英文單詞字頻統(tǒng)計(jì)程序如第 17 題圖所示,在文本框 Text1 中 輸入文章,單擊“統(tǒng)計(jì)”按鈕 Command1,在列表框 List1 輸出單詞與頻次,在標(biāo)簽 Label2 中輸出頻次最高的單詞,如頻次最高的單詞有多個(gè),則輸出時(shí)用逗號(hào)分隔。算法如下: (1)將文本框 Text1 中的文章保存到字符串變量 s 中。 (2)從左往右掃描字符串 s,用字符串 word 存儲(chǔ)文章中依次出現(xiàn)的單詞,將新出現(xiàn)的單 詞自動(dòng)加入單詞隊(duì)列 dic(i)中,單詞出現(xiàn)的頻次記錄到對(duì)應(yīng)的 num(i)中。如下方法掃描: ①?gòu)淖笸覓呙?,?dāng)掃描到第 i 個(gè)字符時(shí),如果是字母,繼續(xù)掃描,否則,跳轉(zhuǎn)到②,直 至掃描結(jié)束; ②將 b 到 i-1 組成一個(gè)單詞 word,查詢單詞字典 dic 判斷是否存在,如果不存在,將新 單詞插入單詞字字典尾部 dic(k),并且記錄單詞頻次 num(k)為 1,如果 dic 字典中存在單詞 word,那么該單詞對(duì)應(yīng)頻次增加 1,再跳轉(zhuǎn)到①。 (3)在列表框 List1 中依次輸出單詞與頻次,在標(biāo)簽 Label2 中輸出頻次最高的單詞。 (1)實(shí)現(xiàn)上述功能的 VB 程序如下,請(qǐng)?jiān)跈M線處填入合適的代碼。 Private Sub Command1_Click ( ) Dim dic(1To 10000)As String‘存儲(chǔ)自建單詞字典 Dim num(1To 10000)As Integer'存儲(chǔ)單詞出現(xiàn)的頻次 Dim word As String'存儲(chǔ)每次掃描的單詞 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'存儲(chǔ)出現(xiàn)頻率最高的單詞串 s=Text1.Text slen=Len(s) j=0'存儲(chǔ)每個(gè)單詞的長(zhǎng)度 k=1'k-1 為當(dāng)前單詞字典長(zhǎng)度 b=1'存儲(chǔ)每個(gè)單詞的起始位置 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( ①
)‘將單詞統(tǒng)一為小寫’ 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 ②
‘單詞在單詞字典中已存在,對(duì)應(yīng)頻次加 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)'如出現(xiàn)頻率最高的單詞有多個(gè),則用逗號(hào)分隔 End If End If Next j Label2.Caption=“出現(xiàn)頻率最高的單詞是:“+result End Sub (2)根據(jù)本題算法,如第 17 題圖所示,若在 Text1 中將文章最后一行“strength you will?!?br />改為“strength you will3”,單詞統(tǒng)計(jì)結(jié)果