資源簡介 專項測試六 查找算法一、選擇題1.已知數列“15,19,21,20,84,77,36,55”,若要在數列中查找數據100,共需查找的次數是( )A.1 B.8 C.9 D.無窮多次解析 本題考查的是順序查找算法。數據100不在數列中,在查找的過程中,需要與數列中每一個數進行比較,因此,共需查找的次數為8次,答案為B。答案 B2.已知數列“32,19,6,57,41,67,28”,若要在數列中查找數據19,共需查找的次數是( )A.1 B.2 C.3 D.4解析 本題考查的是順序查找算法。數據19在數列中的位置是2,因此共需查找的次數為2,答案為B。答案 B3.某查找算法的部分VB代碼如下:flag=TrueKey=Val(Text1.Text)i=1Do While i<=8 And flag If a(i)=Key Then flag=False Else i=i+1 End IfLoopIf Not flag Then Label1.Caption=“Find!”Else Label1.Caption=“Fail!”End If數組元素a(1)到a(8)的數據依次為“11,2,0,6,8,3,5,8”,程序運行時,在文本框Text1中輸入8,則在標簽Label1中顯示的內容是( )A.“Find!” B.“Fail!”C.Find! D.Fail解析 本題主要考查的是順序查找的實現過程。本程序的功能是查找數列中第一個與目標數據相等的數,若找到則在標簽Label1中顯示Find!,若找不到則在標簽Label1中顯示Fail!,因此答案為C。答案 C4.某對分查找算法的VB程序段如下:key = Val(Text1.Text)i = 1: j = 10Text2.Text = “ ”Do While i <= j m = Int((i + j) / 2 + 0.5)If key = a(m) Then Exit Do ′Exit Do表示退出循環If key < a(m) Then j = m - 1 Else i = m + 1Text2.Text = Text2.Text + Str(a(m))Loop數組元素a(1)到a(10)的值依次為“8,17,24,30,36,40,55,58,61,66”,文本框Text1中輸入的值是30,執行該程序段,文本框Text2中顯示的是( )A.40 24 B.40 24 36C.36 24 D.36 17 24解析 本題主要考查的是對分查找算法。本題的功能是求使用對分查找查找數據30的過程中依次被訪問的數據。本程序是對原有的對分查找算法進行變式,當查找范圍[i,j]內的數據為偶數個時,原有的對分查找所查找的位置為Int((i+j)/2),即中間兩個元素中的前面那個;此程序將查找位置修改為Int((i+j)/2+0.5),即中間兩個元素中的后面那個。因此,根據公式計算可知,在查找過程中,第一次訪問的數據是第6個(40),第二次訪問的數據是第3個(24),第三次訪問的數據是第4個(36)。答案 B5.某對分査找算法的VB程序段如下:i = 1: j = 7: s = “ ”key = Int(Rnd * 100)Do While i <= j m = (i + j) 2 If key = a(m) Then s = s + “M”: Exit Do ′Exit Do 表示退出循環 ElseIf key < a(m) Then j = m - 1: s = s + “L” Else i = m + 1: s = s + “R” End IfLoopText1.Text = s數組元素a(1)到a(7)的值依次為“24,35,38,41,45,69,78”。若該程序段執行后,文本框Text1中顯示的內容可能是( )A.RL B.LMRC.RLR D.LRLM解析 本題主要考查的是對分查找算法。本題程序的功能是求在查找目標值key的過程中目標值在被訪問元素的左還是右區間內。共有7個元素,因此最多查找三次,如果在數據中找到目標值,則必定以M結尾,因此A、B、D選項均錯誤,答案為C。答案 C6.數組a為一組正整數,奇數在前,偶數在后。奇數與偶數已分別按升序排序。依據對分查找思想:設計一個在數組a中查找數據Key的程序。實現該功能的VB程序段如下:i = 1: j = 10Key = Val(Text1.Text)Do While i <= j m = (i + j) 2 If a(m) = Key Then Exit Do ′Exit Do表示退出循環 If Key Mod 2 = 1 And a(m) Mod 2 = 0 Then ElseIf Key Mod 2 = 0 And a(m) Mod 2 = 1 Then Else End IfLoopIf i > j Then s = “沒有找到!” Else s = “位置:” + Str(m)Text2.Text = s上述程序中方框處可選語句為:①i = m + 1②j = m - 1③If Key < a(m) Then j = m - 1 Else i = m + 1則(1)、(2)、(3)處語句依次是( )A.①、②、③ B.①、③、②C.②、①、③ D.③、②、①解析 本題主要考查是對分查找算法。本題是對分查找算法的一種變式,查找的數據有兩類(偶數和奇數),則在查找過程中需分三種情況來討論分析:(1)如果要查找的數據(key)是奇數并且當前被訪問的數為偶數時,則要查找的數據必定在前半段中,因為后半段肯定都是偶數,即j=m-1;(2)如果要查找的數據(key)是偶數并且當前被訪問的數為奇數時,則要查找的數據必定在后半段中,因為前半段肯定都是奇數,即i=m+1;(3)除上面兩種情況外的其他情況,要查找的數據是偶數(或奇數),當前被訪問的數據也是偶數(或奇數)時,即If Key < a(m) Then j = m - 1 Else i = m + 1 。答案 C7.有以下VB程序段:Dim a As String, b As String, p As String, s As Stringa = Text1.Textb = Text2.Textc = Text3.Text p = “ ”For i = 1 To Len(a) If b = Mid(a, i, Len(b)) Then s = s + c p = p + Str(i) Else s = s + Mid(a, i, 1) End IfNext iLabel1.Caption = p若文本框Text1中輸入“Hello,Python!I use Python!”,文本框Text2中輸入“Python”, 文本框Text3中輸入“VB”運行該段程序后,標簽Label1中顯示的是( )A.7 20 B.8 21C.12 26 D.13 27解析 本題主要考查的是順序查找。本題程序的功能是:將文本框Text1中的所有Text2內容替換為Text3內容,并記錄Text2內容在Text1中的位置。在Text1中共有兩個“Python”,位置分別為8和21,因此答案為A。答案 A8.某對分査找算法的VB程序段如下:i = 1: j = 9: n = 0key = Val(Textl.Text)Do While i<= j n = n + 1 m = Fix((i + j) / 2) If key = d(m) Then Exit Do ′Exit Do表示退出循環 If key < d(m) Then j = m - 1 Else i = m + 1Loop數組元素d(1)到d(9)的值依次為“7,12,18,25,39,58,61,72,86”。若該程序段運行結束后,n的值為2,則key的值是( )A.39 B.18或61C.18或72 D.12或61解析 本題主要考查的是對分查找。變量n表示查找的次數,已知n=2,因此本題的功能是求對分查找2次時被訪問的數據有哪些。共有9個數據,第一次訪位置5上的數據(39),第二次可能被訪問的數據所在的位置可能為2(此位置上的數據為12)或7(此位置上的數據為61),因此key的值是12或61,答案為D。答案 D9.用對分查找法和順序查找法在數字序列“1,2,3,5,8,13,21,34,55”中查找數字13,兩種方法都能訪問到的數字是( )A.3 B.5 C.8 D.34解析 本題主要考查的是對分查找算法。使用對分查找查找數字13的過程中被訪問的數字依次為8、21、13,因此順序查找和對分想找都能訪問的數字為8,答案為C。答案 C10.采用如下對分查找算法對數組a中7個有序數據“15,38,51,66,77,81,99”進行查找,查找數據為“55”。i = 1: j = 7: x = 55Do While i <= j m = (i + j) 2 If a(m) = x Then Exit Do If a(m) > x Then j = m - 1 Else i = m + 1Loop上述程序段運行后,下列表達式正確的是( )A.i=m+1 B.i=m-1C.j>m+1 D.j解析 本題主要考查的是對分查找算法。第1次查找范圍[i,j]為[1,7],m為4,第2次查找范圍為[1,3],m為2,第3次查找范圍為[3,3],m為3,i更新為4,因此i=m+1。答案為A。答案 A11.下列程序段用于在前面部分為升序后面部分為降序的數組 a 中查找最大值,返回該數值及其位置(下標)。 i = 1: j = 10flag = False Do While i <= j And Not flag m = (i + j + 1) 2 If a(m) < a(m - 1) And a(m) > a(m + 1) Then ElseIf a(m) > a(m - 1) And a(m) > a(m + 1) Then ElseIf a(m) > a(m - 1) And a(m) < a(m + 1) Then End If Loop List1.AddItem Str(a(m)) +Str(m) 上述程序方框處可選句為:①i=m+1 ②j=m-1③flag = True 則①②③處語句依次是( )A.①②③ B.①③②C.③①② D.②③①解析 本題主要考查對分查找的變異算法,a(m)a(m+1)說明a(m)處于降序段,應填入j=m-1.a(m)>a(m-1)And a(m)>a(m+1),此時a(m)已為最大值,應填入flag=True。答案為D。答案 D二、非選擇題12.編寫一個單詞查找程序,其功能是:在文本框Text1中輸入要查找的單詞,單擊“查找”按鈕Command1后,在標簽Label4中輸出查找結果。程序運行效果如下圖所示。算法說明:(1)英語單詞存放在數組words中。(2)如果在數組words中找到要查找的單詞,則在標簽Label4中顯示“查找成功!”,并顯示單詞在數組words中出現的次數,如果未找到則顯示“無此單詞,請重輸!”。實現上述功能的VB程序如下,請在程序劃線處填入合適的語句。Dim n As IntegerDim words(1 To 100) As StringPrivate Sub Command1_Click() Dim key As String, i As Integer, times As Integer key = Text1.Text times = 0 For i = 1 To n If key=words(i) Then ______②______ Next i If times > 0 ThenLabel4.Caption=“查找成功!共找到”+________③________ +“個” Else Label4.Caption = “無此單詞,請重輸!” End IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) Dim word As String word = Text1.Text If KeyAscii = 13 Then n = n + 1 __________①________List1.AddItem Str(n) + “:” + wordText1.Text = “ ” End IfEnd Sub解析 本題主要考查的是順序查找算法。事件處理過程Text1_KeyPress()的功能是在文本框Text1中輸入單詞,并將單詞存儲在數組words中,最后將輸入的單詞顯示在列表框List1中,變量n用于記錄輸入的單詞數,因此①處的語句為words(n)=word;如果在數組words中找到目標單詞key,則用變量times計數,因此②處語句為times=times+1;times大于0,表示查找成功,則在label4中顯示出現的次數,因此③處的語句為Str(times)。答案 ①words(n)=word?、趖imes=times+1?、跾tr(times)13.小明編寫了一個查找替換的VB程序,其功能為:在一串由漢字、空格和標點符號組成的文本中,把文本中的某個字符串用另一個字符串替換。程序界面如下圖所示,程序運行時,在文本框Text1中輸入一段文本,在文本框Text2中輸入查找的字符串,在文本框Text3中輸入替換為的字符串,單擊“查找替換”按鈕Command1,則在文本框Text4中輸出替換后的文本,在標簽Label6中顯示替換的次數。實現上述功能的VB程序如下,請在程序劃線處填入合適的代碼。Private Sub Command1_Click() Dim st1 As String, st2 As String Dim i As Integer, n As Integer, count As Integer Dim st3 As String, ch As String, result As String result = “ ” st1 = Text1.Text st2 = Text2.Text st3 = Text3.Text len1 = Len(Text2.Text) ________①______ result = “ ” i = 1 Do While i <= n________②________If ch = st2 Then result = result + st3 count = count + 1 i = i + len1Else________③________ i = i + 1End If Loop Text4.Text = result Label6.Caption = Str(count)End Sub解析 本題主要考查的是順序查找算法。從代碼“Do While i <= n”可知,劃線①處為關于變量n賦值的語句,n為文本的總長度,即字符總個數,因此①處代碼為n = Len(st1);②處所在循環表示首先從文本中取出與要查找的字符串等長的子串,然后與要查找的字符串比較是否相同,若相同,則被替換,變量i則跳過len1個位置,因此②處代碼為ch = Mid(st1, i, len1);若當前字符串與要查找的字符串不相同,則將當前字符(第i個)存入字符串result中,變量i往后走一步,因此③處語句為result = result + Mid(st1, i, 1)。答案?、賜 = Len(st1)或n=Len(st1)-Len1+1 ②ch = Mid(st1, i, len1)?、踨esult=result+Mid(st1,i,1)14.小華寫了一個模糊查詢的VB程序,具體功能如下:程序運行時,在列表框List1中顯示熱門書籍名稱,在文本框Text1中輸入查詢關鍵詞后,單擊“開始查詢”按鈕Command1,則在列表框List2中顯示包含此關鍵詞的書籍名稱,并統計找到的書籍數;若找不到,則在列表框List2中輸出“查無此書”。程序運行界面如下圖所示:為實現上述的功能的程序如下,加框處的代碼有誤,請改正。Dim book(1 To 20) As String, st As StringConst n = 20Private Sub Form_Load() ′讀入n個數據,存儲在數組book中,并顯示在列表框List1中End SubPrivate Sub Command1_Click() Dim i As Integer, j As Integer, len1 As Integer, len2 As Integer,k As Integer st = Text1.Text List2.Clear len1 = Len(st) k = 0 For i = 1 To nlen2 = Len(book(i)) ′①Do While j <= len2 - len1 + 1 If Then ′② List2.AddItem book(i) k = k + 1 End If j = j + 1Loop Next i If k> 0 ThenList2.AddItem “共找到”+Str(k) + “條信息” ElseList2.AddItem “查無此書” End IfEnd Sub程序中加框①處應改正為_____________________________________________;加框②處應改正為_________________________________________________。解析 本題主要考查的是順序查找算法思想。本題的功能是在book數組元素中查找關鍵詞st,若找到則找到的記錄數進行計數(k=k+1),并顯示在列表框List2中。每次開始查找時,總是從數組元素book(i)的第1個字符開始,因此j=1,取出與st等長的字符串,并與字符串st比較是否相等,若相等則表示找到一條記錄,因此程序②處語句應修改為 Mid(book(i), j, len1) = st,也可以寫作st=Mid(book(i), j, len1)。答案?、賘=1?、贛id(book(i), j, len1) = st或st=Mid(book(i), j, len1)15.大家期盼的校運會要來了,同學們踴躍報名,共有20人報了100米,30人報了200米。小明編寫了一個VB程序,用于查詢同時報名參加100米和200米比賽的學生,并統計學生數。具體功能如下:程序運行時,在列表框List1中顯示報100米的學生學號和姓名,在列表框List2中顯示報200米的學生學號和姓名,單擊“排序”按鈕Command1后,將List2中數據按“姓名”升序排序,并將排序后的數據重新顯示在列表框List2中;單擊“查詢并統計”按鈕Command2后,在列表框List3中顯示同時報名參加100米和200米比賽的學生信息,并在該列表框的最后顯示同時報名這兩項比賽的學生數。程序運行界面如下圖所示:為實現上述功能的程序如下,請在劃線處填入合適的語句或代碼。Dim xm1(1 To 20) As String, xh1(1 To 20) As String′數組xm1、xh1分別存儲選報課程1的學生的姓名和學號Dim xm2(1 To 30) As String, xh2(1 To 30) As String′數組xm2、xh2分別存儲選報課程2的學生的姓名和學號Const n = 20, m = 30Private Sub Form_Load() ′獲取選報數據,并顯示在列表框List1和List2中′代碼略End SubPrivate Sub Command1_Click() Dim i As Integer, j As Integer, tt As String List2.Clear For i = 1 To m - 1 For j =______①______ Step -1If xm2(j) < xm2(j - 1) Then tt = xm2(j): xm2(j) = xm2(j - 1): xm2(j - 1) = tt tt = xh2(j): xh2(j) = xh2(j - 1): xh2(j - 1) = ttEnd If Next j Next i For i = 1 To m List2.AddItem xh2(i) + “ ” + xm2(i) Next iEnd SubPrivate Sub Command2_Click() Dim i As Integer, j As Integer, w As Integer, tt As String, k As Integer For i = 1 To n p = 1 ______②______ Do While p <= q w = (p + q) 2 If xm1(i) = xm2(w) Then List3.AddItem xh1(i) + “ ” + xm1(i) k = k + 1 End If If ______③______Then q = w - 1 Else p = w + 1 End If Loop Next i List3.AddItem “共有” + Str(k) + “ 位同學”End Sub解析 本題主要考查的是冒泡排序和對分查找算法。①代碼表示對報200米的學生按姓名升序排序,因此①處應填入的語句為m To i + 1 Step -1;②③處的代碼表示對分查找算法,②表示查找范圍的終點,因此為q = m;根據語句q=m-1可知,③處語句為xm1(i) < xm2(w)。答案 ①m To i + 1?、趒 = m?、踴m1(i) < xm2(w)16.對分查找算法可用于求解方程的近似值。現要求方程x3-4x2+x+5=0的一個近似值,可設f(x)= x3-4x2+x+5,若有區間[a,b],使f(a)與f(b)異號,則該區間內必存在該方程的一個解。小明為此編寫了VB程序,功能如下:程序運行時,在文本框Text1、Text2中輸入區間值a、b,要求a實現上述功能的VB程序如下,請在劃線處填入合適的語句。Function f(x As Double) As Double Dim y As Double ________①________ f = yEnd FunctionPrivate Sub Command1_Click() Dim a As Double, b As Double, m As Double, x As Double a = Val(Text1.Text) b = Val(Text2.Text) If f(a) * f(b) < 0 And a < b Then Do While a <= b ______②______If Abs(f(m)) < 0.00001 Then Exit DoIf ______③______ Then b = mElse a = mEnd If Loop x = Format(m, “0.00000”) ′Format函數用于定義輸出的小數位數 List1.AddItem “[” & Text1.Text & “,” & Text2.Text & “]” & “解為:” & x Else List1.AddItem “[“ & a & ”,“ & b & ”]” & “請重新輸入區間” End IfEnd Sub解析 劃線①處是求方程的解,根據代碼“f=y”可知,方程解為y,因此①處代碼為y= x^3-4*x^2+x+5;②處為求區間的中間值,中間值為double類型,因此②處代碼為m =(a+b)/2,而不是m =(a+b)2;根據Then后面的代碼“b = m”可知,③處條件為f(a)*f(m)<0。答案?、賧= x^3-4*x^2+x+5 ②m=(a+b)/2③f(a)*f(m)<0專項測試六 查找算法一、選擇題1.已知數列“15,19,21,20,84,77,36,55”,若要在數列中查找數據100,共需查找的次數是( )A.1 B.8 C.9 D.無窮多次2.已知數列“32,19,6,57,41,67,28”,若要在數列中查找數據19,共需查找的次數是( )A.1 B.2 C.3 D.43.某查找算法的部分VB代碼如下:flag=TrueKey=Val(Text1.Text)i=1Do While i<=8 And flag If a(i)=Key Then flag=False Else i=i+1 End IfLoopIf Not flag Then Label1.Caption=“Find!”Else Label1.Caption=“Fail!”End If數組元素a(1)到a(8)的數據依次為“11,2,0,6,8,3,5,8”,程序運行時,在文本框Text1中輸入8,則在標簽Label1中顯示的內容是( )A.“Find!” B.“Fail!”C.Find! D.Fail4.某對分查找算法的VB程序段如下:key = Val(Text1.Text)i = 1: j = 10Text2.Text = “ ”Do While i <= j m = Int((i + j) / 2 + 0.5)If key = a(m) Then Exit Do ′Exit Do表示退出循環If key < a(m) Then j = m - 1 Else i = m + 1Text2.Text = Text2.Text + Str(a(m))Loop數組元素a(1)到a(10)的值依次為“8,17,24,30,36,40,55,58,61,66”,文本框Text1中輸入的值是30,執行該程序段,文本框Text2中顯示的是( )A.40 24 B.40 24 36C.36 24 D.36 17 245.某對分査找算法的VB程序段如下:i = 1: j = 7: s = “ ”key = Int(Rnd * 100)Do While i <= j m = (i + j) 2 If key = a(m) Then s = s + “M”: Exit Do ′Exit Do 表示退出循環 ElseIf key < a(m) Then j = m - 1: s = s + “L” Else i = m + 1: s = s + “R” End IfLoopText1.Text = s數組元素a(1)到a(7)的值依次為“24,35,38,41,45,69,78”。若該程序段執行后,文本框Text1中顯示的內容可能是( )A.RL B.LMRC.RLR D.LRLM6.數組a為一組正整數,奇數在前,偶數在后。奇數與偶數已分別按升序排序。依據對分查找思想:設計一個在數組a中查找數據Key的程序。實現該功能的VB程序段如下:i = 1: j = 10Key = Val(Text1.Text)Do While i <= j m = (i + j) 2 If a(m) = Key Then Exit Do ′Exit Do表示退出循環 If Key Mod 2 = 1 And a(m) Mod 2 = 0 Then ElseIf Key Mod 2 = 0 And a(m) Mod 2 = 1 Then Else End IfLoopIf i > j Then s = “沒有找到!” Else s = “位置:” + Str(m)Text2.Text = s上述程序中方框處可選語句為:①i = m + 1②j = m - 1③If Key < a(m) Then j = m - 1 Else i = m + 1則(1)、(2)、(3)處語句依次是( )A.①、②、③ B.①、③、②C.②、①、③ D.③、②、①7.有以下VB程序段:Dim a As String, b As String, p As String, s As Stringa = Text1.Textb = Text2.Textc = Text3.Text p = “ ”For i = 1 To Len(a) If b = Mid(a, i, Len(b)) Then s = s + c p = p + Str(i) Else s = s + Mid(a, i, 1) End IfNext iLabel1.Caption = p若文本框Text1中輸入“Hello,Python!I use Python!”,文本框Text2中輸入“Python”, 文本框Text3中輸入“VB”運行該段程序后,標簽Label1中顯示的是( )A.7 20 B.8 21C.12 26 D.13 278.某對分査找算法的VB程序段如下:i = 1: j = 9: n = 0key = Val(Textl.Text)Do While i<= j n = n + 1 m = Fix((i + j) / 2) If key = d(m) Then Exit Do ′Exit Do表示退出循環 If key < d(m) Then j = m - 1 Else i = m + 1Loop數組元素d(1)到d(9)的值依次為“7,12,18,25,39,58,61,72,86”。若該程序段運行結束后,n的值為2,則key的值是( )A.39 B.18或61C.18或72 D.12或619.用對分查找法和順序查找法在數字序列“1,2,3,5,8,13,21,34,55”中查找數字13,兩種方法都能訪問到的數字是( )A.3 B.5 C.8 D.3410.采用如下對分查找算法對數組a中7個有序數據“15,38,51,66,77,81,99”進行查找,查找數據為“55”。i = 1: j = 7: x = 55Do While i <= j m = (i + j) 2 If a(m) = x Then Exit Do If a(m) > x Then j = m - 1 Else i = m + 1Loop上述程序段運行后,下列表達式正確的是( )A.i=m+1 B.i=m-1C.j>m+1 D.j11.下列程序段用于在前面部分為升序后面部分為降序的數組 a 中查找最大值,返回該數值及其位置(下標)。 i = 1: j = 10flag = False Do While i <= j And Not flag m = (i + j + 1) 2 If a(m) < a(m - 1) And a(m) > a(m + 1) Then ElseIf a(m) > a(m - 1) And a(m) > a(m + 1) Then ElseIf a(m) > a(m - 1) And a(m) < a(m + 1) Then End If Loop List1.AddItem Str(a(m)) +Str(m) 上述程序方框處可選句為:①i=m+1 ②j=m-1③flag = True 則①②③處語句依次是( )A.①②③ B.①③②C.③①② D.②③①二、非選擇題12.編寫一個單詞查找程序,其功能是:在文本框Text1中輸入要查找的單詞,單擊“查找”按鈕Command1后,在標簽Label4中輸出查找結果。程序運行效果如下圖所示。算法說明:(1)英語單詞存放在數組words中。(2)如果在數組words中找到要查找的單詞,則在標簽Label4中顯示“查找成功!”,并顯示單詞在數組words中出現的次數,如果未找到則顯示“無此單詞,請重輸!”。實現上述功能的VB程序如下,請在程序劃線處填入合適的語句。Dim n As IntegerDim words(1 To 100) As StringPrivate Sub Command1_Click() Dim key As String, i As Integer, times As Integer key = Text1.Text times = 0 For i = 1 To n If key=words(i) Then ______②______ Next i If times > 0 ThenLabel4.Caption=“查找成功!共找到”+________③________ +“個” Else Label4.Caption = “無此單詞,請重輸!” End IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) Dim word As String word = Text1.Text If KeyAscii = 13 Then n = n + 1 __________①________List1.AddItem Str(n) + “:” + wordText1.Text = “ ” End IfEnd Sub13.小明編寫了一個查找替換的VB程序,其功能為:在一串由漢字、空格和標點符號組成的文本中,把文本中的某個字符串用另一個字符串替換。程序界面如下圖所示,程序運行時,在文本框Text1中輸入一段文本,在文本框Text2中輸入查找的字符串,在文本框Text3中輸入替換為的字符串,單擊“查找替換”按鈕Command1,則在文本框Text4中輸出替換后的文本,在標簽Label6中顯示替換的次數。實現上述功能的VB程序如下,請在程序劃線處填入合適的代碼。Private Sub Command1_Click() Dim st1 As String, st2 As String Dim i As Integer, n As Integer, count As Integer Dim st3 As String, ch As String, result As String result = “ ” st1 = Text1.Text st2 = Text2.Text st3 = Text3.Text len1 = Len(Text2.Text) ________①______ result = “ ” i = 1 Do While i <= n________②________If ch = st2 Then result = result + st3 count = count + 1 i = i + len1Else________③________ i = i + 1End If Loop Text4.Text = result Label6.Caption = Str(count)End Sub14.小華寫了一個模糊查詢的VB程序,具體功能如下:程序運行時,在列表框List1中顯示熱門書籍名稱,在文本框Text1中輸入查詢關鍵詞后,單擊“開始查詢”按鈕Command1,則在列表框List2中顯示包含此關鍵詞的書籍名稱,并統計找到的書籍數;若找不到,則在列表框List2中輸出“查無此書”。程序運行界面如下圖所示:為實現上述的功能的程序如下,加框處的代碼有誤,請改正。Dim book(1 To 20) As String, st As StringConst n = 20Private Sub Form_Load() ′讀入n個數據,存儲在數組book中,并顯示在列表框List1中End SubPrivate Sub Command1_Click() Dim i As Integer, j As Integer, len1 As Integer, len2 As Integer,k As Integer st = Text1.Text List2.Clear len1 = Len(st) k = 0 For i = 1 To nlen2 = Len(book(i)) ′①Do While j <= len2 - len1 + 1 If Then ′② List2.AddItem book(i) k = k + 1 End If j = j + 1Loop Next i If k> 0 ThenList2.AddItem “共找到”+Str(k) + “條信息” ElseList2.AddItem “查無此書” End IfEnd Sub程序中加框①處應改正為_____________________________________________;加框②處應改正為_________________________________________________。15.大家期盼的校運會要來了,同學們踴躍報名,共有20人報了100米,30人報了200米。小明編寫了一個VB程序,用于查詢同時報名參加100米和200米比賽的學生,并統計學生數。具體功能如下:程序運行時,在列表框List1中顯示報100米的學生學號和姓名,在列表框List2中顯示報200米的學生學號和姓名,單擊“排序”按鈕Command1后,將List2中數據按“姓名”升序排序,并將排序后的數據重新顯示在列表框List2中;單擊“查詢并統計”按鈕Command2后,在列表框List3中顯示同時報名參加100米和200米比賽的學生信息,并在該列表框的最后顯示同時報名這兩項比賽的學生數。程序運行界面如下圖所示:為實現上述功能的程序如下,請在劃線處填入合適的語句或代碼。Dim xm1(1 To 20) As String, xh1(1 To 20) As String′數組xm1、xh1分別存儲選報課程1的學生的姓名和學號Dim xm2(1 To 30) As String, xh2(1 To 30) As String′數組xm2、xh2分別存儲選報課程2的學生的姓名和學號Const n = 20, m = 30Private Sub Form_Load() ′獲取選報數據,并顯示在列表框List1和List2中′代碼略End SubPrivate Sub Command1_Click() Dim i As Integer, j As Integer, tt As String List2.Clear For i = 1 To m - 1 For j =______①______ Step -1If xm2(j) < xm2(j - 1) Then tt = xm2(j): xm2(j) = xm2(j - 1): xm2(j - 1) = tt tt = xh2(j): xh2(j) = xh2(j - 1): xh2(j - 1) = ttEnd If Next j Next i For i = 1 To m List2.AddItem xh2(i) + “ ” + xm2(i) Next iEnd SubPrivate Sub Command2_Click() Dim i As Integer, j As Integer, w As Integer, tt As String, k As Integer For i = 1 To n p = 1 ______②______ Do While p <= q w = (p + q) 2 If xm1(i) = xm2(w) Then List3.AddItem xh1(i) + “ ” + xm1(i) k = k + 1 End If If ______③______Then q = w - 1 Else p = w + 1 End If Loop Next i List3.AddItem “共有” + Str(k) + “ 位同學”End Sub16.對分查找算法可用于求解方程的近似值。現要求方程x3-4x2+x+5=0的一個近似值,可設f(x)= x3-4x2+x+5,若有區間[a,b],使f(a)與f(b)異號,則該區間內必存在該方程的一個解。小明為此編寫了VB程序,功能如下:程序運行時,在文本框Text1、Text2中輸入區間值a、b,要求a實現上述功能的VB程序如下,請在劃線處填入合適的語句。Function f(x As Double) As Double Dim y As Double ________①________ f = yEnd FunctionPrivate Sub Command1_Click() Dim a As Double, b As Double, m As Double, x As Double a = Val(Text1.Text) b = Val(Text2.Text) If f(a) * f(b) < 0 And a < b Then Do While a <= b ______②______If Abs(f(m)) < 0.00001 Then Exit DoIf ______③______ Then b = mElse a = mEnd If Loop x = Format(m, “0.00000”) ′Format函數用于定義輸出的小數位數 List1.AddItem “[” & Text1.Text & “,” & Text2.Text & “]” & “解為:” & x Else List1.AddItem “[“ & a & ”,“ & b & ”]” & “請重新輸入區間” End IfEnd Sub 展開更多...... 收起↑ 資源列表 專項測試六 查找算法.doc 專項測試六 查找算法原卷版.doc 縮略圖、資源來源于二一教育資源庫