中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2020版算法與程序設計 專項測試六 查找算法

資源下載
  1. 二一教育資源

2020版算法與程序設計 專項測試六 查找算法

資源簡介

專項測試六 查找算法
一、選擇題
1.已知數列“15,19,21,20,84,77,36,55”,若要在數列中查找數據100,共需查找的次數是(  )
A.1 B.8
C.9 D.無窮多次
解析 本題考查的是順序查找算法。數據100不在數列中,在查找的過程中,需要與數列中每一個數進行比較,因此,共需查找的次數為8次,答案為B。
答案 B
2.已知數列“32,19,6,57,41,67,28”,若要在數列中查找數據19,共需查找的次數是(  )
A.1 B.2
C.3 D.4
解析 本題考查的是順序查找算法。數據19在數列中的位置是2,因此共需查找的次數為2,答案為B。
答案 B
3.某查找算法的部分VB代碼如下:
flag=True
Key=Val(Text1.Text)
i=1
Do While i<=8 And flag
 If a(i)=Key Then
flag=False
 Else
i=i+1
 End If
Loop
If 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。
答案 C
4.某對分查找算法的VB程序段如下:
key = Val(Text1.Text)
i = 1: j = 10
Text2.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 + 1
Text2.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 36
C.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)。
答案 B
5.某對分査找算法的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 If
Loop
Text1.Text = s
數組元素a(1)到a(7)的值依次為“24,35,38,41,45,69,78”。若該程序段執行后,文本框Text1中顯示的內容可能是(  )
A.RL B.LMR
C.RLR D.LRLM
解析 本題主要考查的是對分查找算法。本題程序的功能是求在查找目標值key的過程中目標值在被訪問元素的左還是右區間內。共有7個元素,因此最多查找三次,如果在數據中找到目標值,則必定以M結尾,因此A、B、D選項均錯誤,答案為C。
答案 C
6.數組a為一組正整數,奇數在前,偶數在后。奇數與偶數已分別按升序排序。依據對分查找思想:設計一個在數組a中查找數據Key的程序。實現該功能的VB程序段如下:
i = 1: j = 10
Key = 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 If
Loop
If 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 。
答案 C
7.有以下VB程序段:
Dim a As String, b As String, p As String, s As String
a = Text1.Text
b = Text2.Text
c = 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 If
Next i
Label1.Caption = p
若文本框Text1中輸入“Hello,Python!I use Python!”,文本框Text2中輸入“Python”, 文本框Text3中輸入“VB”運行該段程序后,標簽Label1中顯示的是(  )
A.7 20 B.8 21
C.12 26 D.13 27
解析 本題主要考查的是順序查找。本題程序的功能是:將文本框Text1中的所有Text2內容替換為Text3內容,并記錄Text2內容在Text1中的位置。在Text1中共有兩個“Python”,位置分別為8和21,因此答案為A。
答案 A
8.某對分査找算法的VB程序段如下:
i = 1: j = 9: n = 0
key = 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 + 1
Loop
數組元素d(1)到d(9)的值依次為“7,12,18,25,39,58,61,72,86”。若該程序段運行結束后,n的值為2,則key的值是(  )
A.39 B.18或61
C.18或72 D.12或61
解析 本題主要考查的是對分查找。變量n表示查找的次數,已知n=2,因此本題的功能是求對分查找2次時被訪問的數據有哪些。共有9個數據,第一次訪位置5上的數據(39),第二次可能被訪問的數據所在的位置可能為2(此位置上的數據為12)或7(此位置上的數據為61),因此key的值是12或61,答案為D。
答案 D
9.用對分查找法和順序查找法在數字序列“1,2,3,5,8,13,21,34,55”中查找數字13,兩種方法都能訪問到的數字是(  )
A.3 B.5
C.8 D.34
解析 本題主要考查的是對分查找算法。使用對分查找查找數字13的過程中被訪問的數字依次為8、21、13,因此順序查找和對分想找都能訪問的數字為8,答案為C。
答案 C
10.采用如下對分查找算法對數組a中7個有序數據“15,38,51,66,77,81,99”進行查找,查找數據為“55”。
i = 1: j = 7: x = 55
Do 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 + 1
Loop
上述程序段運行后,下列表達式正確的是(  )
A.i=m+1 B.i=m-1
C.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。
答案 A
11.下列程序段用于在前面部分為升序后面部分為降序的數組 a 中查找最大值,返回該數值及其位置(下標)。
i = 1: j = 10
flag = 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 Integer
Dim words(1 To 100) As String
Private 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 Then
Label4.Caption=“查找成功!共找到”+________③________ +“個”
 Else
Label4.Caption = “無此單詞,請重輸!”
 End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
 Dim word As String
 word = Text1.Text
 If KeyAscii = 13 Then
n = n + 1
   __________①________
List1.AddItem Str(n) + “:” + word
Text1.Text = “ ”
 End If
End 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 + len1
Else
________③________
  i = i + 1
End 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 String
Const n = 20
Private Sub Form_Load()
 ′讀入n個數據,存儲在數組book中,并顯示在列表框List1中
End Sub
Private 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 n
len2 = Len(book(i))
     ′①
Do While j <= len2 - len1 + 1
  If  Then  ′②
   List2.AddItem book(i)
   k = k + 1
  End If
  j = j + 1
Loop
 Next i
 If k> 0 Then
List2.AddItem “共找到”+Str(k) + “條信息”
 Else
List2.AddItem “查無此書”
 End If
End 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 = 30
Private Sub Form_Load()
  ′獲取選報數據,并顯示在列表框List1和List2中
′代碼略
End Sub
Private Sub Command1_Click()
 Dim i As Integer, j As Integer, tt As String
 List2.Clear
 For i = 1 To m - 1
For j =______①______ Step -1
If 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) = tt
End If
Next j
 Next i
 For i = 1 To m
List2.AddItem xh2(i) + “  ” + xm2(i)
 Next i
End Sub
Private 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 = y
End Function
Private 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 Do
If ______③______ Then
    b = m
Else
    a = m
End If
Loop
x = Format(m, “0.00000”) ′Format函數用于定義輸出的小數位數
List1.AddItem “[” & Text1.Text & “,” & Text2.Text & “]” & “解為:” & x
 Else
List1.AddItem “[“ & a & ”,“ & b & ”]” & “請重新輸入區間”
 End If
End 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.4
3.某查找算法的部分VB代碼如下:
flag=True
Key=Val(Text1.Text)
i=1
Do While i<=8 And flag
 If a(i)=Key Then
flag=False
 Else
i=i+1
 End If
Loop
If 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
4.某對分查找算法的VB程序段如下:
key = Val(Text1.Text)
i = 1: j = 10
Text2.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 + 1
Text2.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 36
C.36 24 D.36 17 24
5.某對分査找算法的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 If
Loop
Text1.Text = s
數組元素a(1)到a(7)的值依次為“24,35,38,41,45,69,78”。若該程序段執行后,文本框Text1中顯示的內容可能是(  )
A.RL B.LMR
C.RLR D.LRLM
6.數組a為一組正整數,奇數在前,偶數在后。奇數與偶數已分別按升序排序。依據對分查找思想:設計一個在數組a中查找數據Key的程序。實現該功能的VB程序段如下:
i = 1: j = 10
Key = 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 If
Loop
If 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 String
a = Text1.Text
b = Text2.Text
c = 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 If
Next i
Label1.Caption = p
若文本框Text1中輸入“Hello,Python!I use Python!”,文本框Text2中輸入“Python”, 文本框Text3中輸入“VB”運行該段程序后,標簽Label1中顯示的是(  )
A.7 20 B.8 21
C.12 26 D.13 27
8.某對分査找算法的VB程序段如下:
i = 1: j = 9: n = 0
key = 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 + 1
Loop
數組元素d(1)到d(9)的值依次為“7,12,18,25,39,58,61,72,86”。若該程序段運行結束后,n的值為2,則key的值是(  )
A.39 B.18或61
C.18或72 D.12或61
9.用對分查找法和順序查找法在數字序列“1,2,3,5,8,13,21,34,55”中查找數字13,兩種方法都能訪問到的數字是(  )
A.3 B.5
C.8 D.34
10.采用如下對分查找算法對數組a中7個有序數據“15,38,51,66,77,81,99”進行查找,查找數據為“55”。
i = 1: j = 7: x = 55
Do 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 + 1
Loop
上述程序段運行后,下列表達式正確的是(  )
A.i=m+1 B.i=m-1
C.j>m+1 D.j11.下列程序段用于在前面部分為升序后面部分為降序的數組 a 中查找最大值,返回該數值及其位置(下標)。
i = 1: j = 10
flag = 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 Integer
Dim words(1 To 100) As String
Private 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 Then
Label4.Caption=“查找成功!共找到”+________③________ +“個”
 Else
Label4.Caption = “無此單詞,請重輸!”
 End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
 Dim word As String
 word = Text1.Text
 If KeyAscii = 13 Then
n = n + 1
   __________①________
List1.AddItem Str(n) + “:” + word
Text1.Text = “ ”
 End If
End Sub
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 + len1
Else
________③________
  i = i + 1
End If
 Loop
 Text4.Text = result
 Label6.Caption = Str(count)
End Sub
14.小華寫了一個模糊查詢的VB程序,具體功能如下:程序運行時,在列表框List1中顯示熱門書籍名稱,在文本框Text1中輸入查詢關鍵詞后,單擊“開始查詢”按鈕Command1,則在列表框List2中顯示包含此關鍵詞的書籍名稱,并統計找到的書籍數;若找不到,則在列表框List2中輸出“查無此書”。程序運行界面如下圖所示:
為實現上述的功能的程序如下,加框處的代碼有誤,請改正。
Dim book(1 To 20) As String, st As String
Const n = 20
Private Sub Form_Load()
 ′讀入n個數據,存儲在數組book中,并顯示在列表框List1中
End Sub
Private 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 n
len2 = Len(book(i))
     ′①
Do While j <= len2 - len1 + 1
  If  Then  ′②
   List2.AddItem book(i)
   k = k + 1
  End If
  j = j + 1
Loop
 Next i
 If k> 0 Then
List2.AddItem “共找到”+Str(k) + “條信息”
 Else
List2.AddItem “查無此書”
 End If
End 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 = 30
Private Sub Form_Load()
  ′獲取選報數據,并顯示在列表框List1和List2中
′代碼略
End Sub
Private Sub Command1_Click()
 Dim i As Integer, j As Integer, tt As String
 List2.Clear
 For i = 1 To m - 1
For j =______①______ Step -1
If 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) = tt
End If
Next j
 Next i
 For i = 1 To m
List2.AddItem xh2(i) + “  ” + xm2(i)
 Next i
End Sub
Private 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
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 = y
End Function
Private 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 Do
If ______③______ Then
    b = m
Else
    a = m
End If
Loop
x = Format(m, “0.00000”) ′Format函數用于定義輸出的小數位數
List1.AddItem “[” & Text1.Text & “,” & Text2.Text & “]” & “解為:” & x
 Else
List1.AddItem “[“ & a & ”,“ & b & ”]” & “請重新輸入區間”
 End If
End Sub

展開更多......

收起↑

資源列表

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 筠连县| 镇沅| 抚远县| 会宁县| 加查县| 竹溪县| 清新县| 吉隆县| 宜宾县| 黄龙县| 遵义市| 三亚市| 长春市| 大连市| 两当县| 吴江市| 潞西市| 凤山县| 清水县| 阿拉善右旗| 凤阳县| 固始县| 当雄县| 浦县| 龙陵县| 杭锦旗| 鱼台县| 射洪县| 阳春市| 潮安县| 兴国县| 获嘉县| 平泉县| 青龙| 南溪县| 泰州市| 东兴市| 天全县| 昆明市| 金阳县| 洛扎县|