16.【加試題】Excel 篩選功能中,有一種篩選方式是篩選出最大或最小的n項(xiàng).當(dāng)數(shù)據(jù)項(xiàng)中有相同項(xiàng)時(shí),篩選出來(lái)的數(shù)據(jù)條數(shù)則可能會(huì)超過(guò)設(shè)定的項(xiàng)數(shù),如圖1所示,設(shè)置篩選條件為最大的5項(xiàng),由于有4 個(gè)“87”的值并列第四,因此最后篩選結(jié)果就有7 條,而不應(yīng)該是5條. 現(xiàn)利用VB 編寫(xiě)一個(gè)類(lèi)似功能的程序.功能如下:數(shù)組xh、kh 和cj 分別存儲(chǔ)了序號(hào)、考號(hào)和成績(jī)數(shù)據(jù),窗體加載時(shí),序號(hào)、考號(hào)和成績(jī)顯示在列表框list1中.在文本框Text1中輸入數(shù)值N,點(diǎn)擊“篩選”按鈕,可以將成績(jī)最大的前 N 項(xiàng)篩選出來(lái),并按由大到小的順序顯示在列表框list2 中.程序運(yùn)行界面如圖2所示. 實(shí)現(xiàn)上述功能的VB代碼如下,但加框處代碼有錯(cuò),請(qǐng)改正. Dim num As Integer Dim xh(1 To 1000)As String Dim kh(1 To 1000)As String Dim cj(1 To 1000)As Integer Private Sub Form_Load( ) ’本過(guò)程從數(shù)據(jù)庫(kù)中將序號(hào)、考號(hào)、成績(jī)分別存入 數(shù)組 xh、kh、cj 中,并將人數(shù)賦值給了 num ’代碼略 End Sub Private Sub Command1_Click( ) Dim N As Integer,i As Integer,j As Integer Dim t1 As String,t2 As Integer N=Val(Text1.Text) List2.Clear For i=1 To N k=i If cj(k)<cj(j) Then k=j Next j If k<>i Then t1=xh(i):xh(i)=xh(k):xh(k)=t1 t1=kh(i):kh(i)=kh(k):kh(k)=t1 t2=cj(i):cj(i)=cj(k):cj(k)=t2 End If List2.AddItem xh(i)+““+kh(i)+““+Str(cj(i)) Next i ’以下代碼是處理可能存在的重復(fù)項(xiàng) For i=N+1 To num List2.AddItem xh(i)+““+kh(i)+““+Str(cj(i)) End If Next i End Sub.
. (2)實(shí)現(xiàn)上述功能的 VB 程序如下,請(qǐng)?jiān)跈M線處填入合適代碼. Private Sub Command1_Click( ) Dim s As String,yw As String,t As String Dim value As Integer'用于存儲(chǔ)某字母在密文中對(duì)應(yīng)數(shù)值的臨時(shí)變量 s=Text1.Text value=0 yw=”” For i=1 To Len(s) t=
If t>=“0“And t<=“9“Then value=value*10+Val(t) ElseIf t=“-“Then yw=yw+Chr(Asc(“A“)+value Mod 27-1)