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

排序算法程序的實現 專項訓練-2022屆高三信息技術二輪復習(含答案)

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

排序算法程序的實現 專項訓練-2022屆高三信息技術二輪復習(含答案)

資源簡介

排序算法的程序實現(教師版)
1.有如下程序段:
For i = 1 To 2
For j = 5 To i + 1 Step -1
If a(j) > a(i) Then
t = a(j): a(j) = a(i): a(i) = t
End If
Next j
Next i
數組元素a(1)到a(5)的值依次為“33,24,45,16,77”,經過該程序段“加工”后,數組元素a(1)到a(5)的值依次為(  )
A.77,45,33,16,24 B.77,33,45,16,24
C.77,24,45,16,33 D.77,45,33,24,16
答案 A
解析 這是一個選擇排序,其排序思想是:在i遍排序中,從最后一個元素開始到第i+1個元素依次和第i號元素比較,如果有比i號元素大的立刻交換,并且記錄元素下標,一遍全部比較結束后再交換進行下一輪。
2.小趙對選擇排序算法進行了如下改進:在數組的所有元素中找出最小和最大數據的元素,然后將這兩個元素分別與第一個和最后一個元素交換數據,在余下的元素中找出最小和最大數據的元素,分別與第二個和倒數第二個元素交換數據,以此類推,直到所有元素的數據按升序排列。小趙編寫的VB程序段如下:
p = 1: q = 10
Do While p < q
 iMin = p: iMax = p
 For i = p + 1 To q
If a(i) < a(iMin) Then iMin = i
If a(i) > a(iMax) Then iMax = i
 Next i
 t = a(iMin): a(iMin) = a(p): a(p) = t
     
 t = a(iMax): a(iMax) = a(q): a(q) = t
 p = p + 1
 q = q - 1
Loop
要使程序實現上述算法思想,則方框中的語句是(  )
A.If iMax = p Then iMax = iMin
B.If iMin = p Then iMin = iMax
C.If iMax = p Then iMin = iMax
D.If iMin = p Then iMax = iMin
答案 A
解析 如果找到的最小值的元素序號iMin=q,最大值的元素序號iMax=p,那么在執行完語句t = a(iMin): a(iMin) = a(p): a(p) = t后,實際上最大值同時也被交換到了a(q)中。這種情況下,如果直接執行后續的語句t = a(iMax): a(iMax) = a(q): a(q) = t,則又將最大值交換到a(p)中,并把最小值也換回到原來的a(q)中。為避免交換好的數據換回來,可以把iMax的值賦為q或iMin,如此t = a(iMax): a(iMax) = a(q): a(q) = t語句就變成了自己和自己交換,不會把交換好的數據換回來。
3.有如下VB程序段:
Dim s(1 To 6) As String
s(1)=″4″:s(2)=″343″:s(3)=″312″:s(4)=″12″:s(5)=″246:s(6)=″121″
c=″ ″
For i=1 To 5
For j=i+1 To 6
If s(i)+s(j)  t=s(j):s(j)=s(i):s(i)=t
End If
Next j
c=c+s(i)
Next i
Text1.text=c
運行該段代碼后,文本框Text1中顯示的內容為(  )
A.343312246121124
B.434331224612112
C.434331224612121
D.121122463123434
答案C
該程序段采用選擇排序法對字符類型的數據進行排序。字符串大小的比較方法是:先比較第1個字符,若不同,ASCII大的一方字符串值較大,之后不用再比較;若相同,則比較第2個。例如:″4″>″345″,″4366″<″451″。根據代碼s(i)+s(j)4.有如下VB程序段:
For i = 5 To 4 Step -1
k = i
For j = 6 - i To 1 Step-1
  If a(j) < a(k) Then k = j
Next j
If i <> k Then
 t = a(i): a(i) = a(k): a(k) = t
End If
Next i
數組元素a(1)到a(5)的值依次為“41,66,70,83,31”,經過該程序段“加工”后,數組元素a(1)到a(5)的值依次為 (  )
A.31,41,66,83,70 B.83,70,66,41,31
C.83,66,70,41,31 D.31,41,66,70,83
答案C
第一遍循環,i=5,k=5,內循環為j=1 to 1只執行1次,比較a(1)5.有如下程序段:
bottom=6: i=1: r=Val(Text1.Text)
Do While iFor j=bottom To i+1 Step -1
If a(j)>a(j-1) Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
i=i+1
For j=i To bottom -1
If a(j)t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
bottom=bottom-1
Loop
數組元素a(1)到a(6)的值依次為“73、56、28、61、44、92”,若在文本框Text1中輸入“2”,則經過該程序段“加工”后,數組元素a(1)到a(6)的值依次為(  )
A.73,61,56,92,44,28
B.92,73,56,61,44,28
C.92,73,61,56,28,44
D.92,73,61,56,44,28
答案B
本題是雙向冒泡排序算法,內循環前半部分從后往前,將大的元素往上冒;后半部分從前往后,將小的元素往下沉。因為r值為2,所以僅排序一次,排序后數組a各元素值為92、73、56、61、44、28。
6.n個數據的冒泡升序排序需要經過n-1遍的加工,每一遍加工自下而上比較相鄰兩個數據,把較小者交換到上面,在第i遍加工過程中需要進行n-i對數據的比較。在某些情況下,第i遍加工過程中,在上面部分較小數據已經有序情況下,不需要再進行n-i對數據的比較。如對“17,18,19,24,23,20”這6個數據排序中,第1遍排序結束后數據為“17,18,19,20,24,23”,第2遍排序時不再需要對20及其前面共4個數據進行比較。以下程序實現了冒泡升序排序的優化,在劃線處填入合適的代碼。
Dim n As Integer
Dim a(1 To 100) As Integer
'n=10,排序前生成的數據存儲在數組a中,并在列表框List1中顯示,代碼略
Private Sub Command1_Click()
Dim i As Integer,j As Integer,start As Integer,t As Integer
i=2
Do While i<=n
start=n
For j=n To i Step-1
  If  ① Then
  t=a(j):a(j)=a(j-1):a(j-1)=t
   ② 
  End If
Next j
i=start+1
Loop
For i=1 To n
List2.AddItem= ③ 
Next i
End Sub
答案 ①a(j)解析 程序要實現升序排序,所以只有當后面的數據小于前面的數據時才需要數據交換,而從后面交換的語句中可以看出是a(j)與a(j-1)交換,所以第①空填a(j)7.用VB小程序統計文章中字母出現的頻率,程序功能如下:在文本框text1中輸入文章,單擊按鈕command1,在列表框list1中按各字母出現的次數降序顯示,程序運行界面如下圖所示。
實現上述功能的VB程序如下。請在劃線處填入合適代碼。
Private Sub Command1_Click()
Dim s As String,t1 As Integer,t2 As String
Dim i As Integer,j As Integer,c As String
Dim a(1 To 26) As Integer  '數組a存放字母出現次數
Dim b(1 To 26) As String '數組b存放26個小寫字母
For i=1 To 26
a(i)=0
b(i)= ① 
Next i
s=Text1.Text
For i=1 To Len(s)
c=Mid(s,i,1)
If c>=″A″ And c<=″Z″ Then
c=Chr(Asc(c)+32)
End If
If c>=″a″ And c<=″z″ Then
 ② 
a(j)=a(j)+1
End If
Next i
For i=1 To 25
For j=1 To  ③ 
If a(j)  t1=a(j):a(j)=a(j+1):a(j+1)=t1
  t2=b(j):b(j)=b(j+1):b(j+1)=t2
End If
Next j
Next i
For i=1 To 26
List1.AddItem b(i) &″:″ & a(i)
Next i
End Sub
答案 ①Chr(Asc(″a″)+i-1) ②j=Asc(c)-Asc(″a″)+1 ③26-i
解析 ①該語句所在循環功能對數組a、b進行初始化,把數組a中的每個元素賦值為0,把數組b中的每個元素依次賦值為“a”、“b”、“c”、……、“z”,所以①處填Chr(Asc(″a″)+i-1)。
②該處的功能是:如果取出字符c為字母,則該字母個數加1,字母個數存入數組a對應的元素中,即a(1)存放字母“a”的個數,a(2)存放字母“b”的個數……,②處要找出字母對應的元素下標j,所以j=Asc(c)-Asc(″a″)+1。
③該處二重循環的功能是對保存在數組a中各字母出現的次數進行降序排列,數組b也作相應調整,排列使用冒泡法,每次是從數組第1個元素開始進行兩兩比較,通過一輪循環把最小值移到最后(移到第27-i號元素中),所以③處語句為26-i。排序算法的程序實現(學生版)
1.有如下程序段:
For i = 1 To 2
For j = 5 To i + 1 Step -1
If a(j) > a(i) Then
t = a(j): a(j) = a(i): a(i) = t
End If
Next j
Next i
數組元素a(1)到a(5)的值依次為“33,24,45,16,77”,經過該程序段“加工”后,數組元素a(1)到a(5)的值依次為(  )
A.77,45,33,16,24 B.77,33,45,16,24
C.77,24,45,16,33 D.77,45,33,24,16
2.小趙對選擇排序算法進行了如下改進:在數組的所有元素中找出最小和最大數據的元素,然后將這兩個元素分別與第一個和最后一個元素交換數據,在余下的元素中找出最小和最大數據的元素,分別與第二個和倒數第二個元素交換數據,以此類推,直到所有元素的數據按升序排列。小趙編寫的VB程序段如下:
p = 1: q = 10
Do While p < q
 iMin = p: iMax = p
 For i = p + 1 To q
If a(i) < a(iMin) Then iMin = i
If a(i) > a(iMax) Then iMax = i
 Next i
 t = a(iMin): a(iMin) = a(p): a(p) = t
     
 t = a(iMax): a(iMax) = a(q): a(q) = t
 p = p + 1
 q = q - 1
Loop
要使程序實現上述算法思想,則方框中的語句是(  )
A.If iMax = p Then iMax = iMin
B.If iMin = p Then iMin = iMax
C.If iMax = p Then iMin = iMax
D.If iMin = p Then iMax = iMin
3.有如下VB程序段:
Dim s(1 To 6) As String
s(1)=″4″:s(2)=″343″:s(3)=″312″:s(4)=″12″:s(5)=″246:s(6)=″121″
c=″ ″
For i=1 To 5
For j=i+1 To 6
If s(i)+s(j)  t=s(j):s(j)=s(i):s(i)=t
End If
Next j
c=c+s(i)
Next i
Text1.text=c
運行該段代碼后,文本框Text1中顯示的內容為(  )
A.343312246121124
B.434331224612112
C.434331224612121
D.121122463123434
4.有如下VB程序段:
For i = 5 To 4 Step -1
k = i
For j = 6 - i To 1 Step-1
  If a(j) < a(k) Then k = j
Next j
If i <> k Then
 t = a(i): a(i) = a(k): a(k) = t
End If
Next i
數組元素a(1)到a(5)的值依次為“41,66,70,83,31”,經過該程序段“加工”后,數組元素a(1)到a(5)的值依次為 (  )
A.31,41,66,83,70 B.83,70,66,41,31
C.83,66,70,41,31 D.31,41,66,70,83
5.有如下程序段:
bottom=6: i=1: r=Val(Text1.Text)
Do While iFor j=bottom To i+1 Step -1
If a(j)>a(j-1) Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
i=i+1
For j=i To bottom -1
If a(j)t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
bottom=bottom-1
Loop
數組元素a(1)到a(6)的值依次為“73、56、28、61、44、92”,若在文本框Text1中輸入“2”,則經過該程序段“加工”后,數組元素a(1)到a(6)的值依次為(  )
A.73,61,56,92,44,28
B.92,73,56,61,44,28
C.92,73,61,56,28,44
D.92,73,61,56,44,28
6.n個數據的冒泡升序排序需要經過n-1遍的加工,每一遍加工自下而上比較相鄰兩個數據,把較小者交換到上面,在第i遍加工過程中需要進行n-i對數據的比較。在某些情況下,第i遍加工過程中,在上面部分較小數據已經有序情況下,不需要再進行n-i對數據的比較。如對“17,18,19,24,23,20”這6個數據排序中,第1遍排序結束后數據為“17,18,19,20,24,23”,第2遍排序時不再需要對20及其前面共4個數據進行比較。以下程序實現了冒泡升序排序的優化,在劃線處填入合適的代碼。
Dim n As Integer
Dim a(1 To 100) As Integer
'n=10,排序前生成的數據存儲在數組a中,并在列表框List1中顯示,代碼略
Private Sub Command1_Click()
Dim i As Integer,j As Integer,start As Integer,t As Integer
i=2
Do While i<=n
start=n
For j=n To i Step-1
  If  ① Then
  t=a(j):a(j)=a(j-1):a(j-1)=t
   ② 
  End If
Next j
i=start+1
Loop
For i=1 To n
List2.AddItem= ③ 
Next i
End Sub
7.用VB小程序統計文章中字母出現的頻率,程序功能如下:在文本框text1中輸入文章,單擊按鈕command1,在列表框list1中按各字母出現的次數降序顯示,程序運行界面如下圖所示。
實現上述功能的VB程序如下。請在劃線處填入合適代碼。
Private Sub Command1_Click()
Dim s As String,t1 As Integer,t2 As String
Dim i As Integer,j As Integer,c As String
Dim a(1 To 26) As Integer  '數組a存放字母出現次數
Dim b(1 To 26) As String '數組b存放26個小寫字母
For i=1 To 26
a(i)=0
b(i)= ① 
Next i
s=Text1.Text
For i=1 To Len(s)
c=Mid(s,i,1)
If c>=″A″ And c<=″Z″ Then
c=Chr(Asc(c)+32)
End If
If c>=″a″ And c<=″z″ Then
 ② 
a(j)=a(j)+1
End If
Next i
For i=1 To 25
For j=1 To  ③ 
If a(j)  t1=a(j):a(j)=a(j+1):a(j+1)=t1
  t2=b(j):b(j)=b(j+1):b(j+1)=t2
End If
Next j
Next i
For i=1 To 26
List1.AddItem b(i) &″:″ & a(i)
Next i
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. 主站蜘蛛池模板: 西和县| 花垣县| 承德市| 于田县| 邳州市| 孝昌县| 宜丰县| 新安县| 微山县| 沂南县| 建湖县| 织金县| 南陵县| 高邮市| 文水县| 荣成市| 合川市| 二连浩特市| 通城县| 渝中区| 静海县| 靖宇县| 武邑县| 宁河县| 加查县| 新宁县| 东乌珠穆沁旗| 通许县| 普陀区| 锡林郭勒盟| 利辛县| 祁连县| 商河县| 英吉沙县| 德化县| 冷水江市| 长寿区| 岳阳市| 东阳市| 文安县| 高清|