教科版(2019)选修一3.2数据的排列同步训练(含解析)

资源下载
  1. 二一教育资源

教科版(2019)选修一3.2数据的排列同步训练(含解析)

资源简介

教科版(2019)选修一3.2数据的排列同步训练
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.将数组a 中的 8 个数据“ 18, 33, 5, 26, 86, 0, 60, 200”按从大到小的顺序,使用选择排序,则需要交换的次数是( )
A.4 B.5 C.6 D.7
2.某校通过政府招投标中心采购一套多媒体教学设备,有5家单位参加竞标,竞标价分别为19万、15万、21万、13万、12万元人民币。 若采用选择排序算法对标价从大到小排序,需要进行数据互换的次数是( )
A.1 B.2 C.3 D.4
3.某学校举行校园歌手比赛,数组a存放歌手的得分,数组mc存放名次。名次计算规则为:先对数组a中的元素按高到低的排序,分值最高为第1名,分值相同则名次相同。VB程序段的部分代码如下:
For i = 1 To 19
For j = 20 To i + 1 Step -1
If① Then t =a(j): a(j)=a(i): a(i)=t
Next j
Next i
mc(1) =②
For i = 2 To 20
If a(i) < > a(i - 1) Then③ Else④
Next i
下列①②③④代码正确的是( )
A.①处代码为 a(j) < a(i)
B.②处代码为 i
C.③处代码为 mc(i) = mc(i + 1)
D.④处代码为 mc(i) = mc(i - 1)
4.有如下 VB 程序段:
s = "26170534": n = Len(s): y = ""
For i = 1 To n
ch(i) = Mid(s, i, 1)
Next i
For i = 1 To n
k = i
For j = i To n Step 2
If ch(j) < ch(k) Then k = j
Next j
If k <> i Then t=ch(k): ch(k)=ch(i): ch(i)=t
y = y & ch(i)
Next i
Label1.Caption = y
该程序段运行后,标签Label1中显示的内容是( )
A.0123 B.4567 C.01234567 D.04152637
5.有如下VB程序段,若数组元素d(l) d(6)的值分别为:“f”、“a”、“t”、“h”、“e”、“r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为( )
n = Val(Text1.Text)
s = d(n)
For i = 1 To 5
For j = 6 To i + 1 Step -1
If d(j)t = d(j):d(j)= d(i): d(i) = t
If i = n Then s = s + "-" + d(i)
If j = n Then s = s + "-" + d(j)
End If
Next j
Next i
Label1.Caption = s
A.t-a-r-f-h B.t-r-f C.t-e-f D.t-r-h
6.有如下程序:
S=""
For i=1 to 3
For j=7 to i+1 step -1
If a(j)K=a(j):a(j)=a(j-1):a(j-1)=k
End if
Next j s=s+str(a(i))
Next i
Text1.text= s
数组元素a(1)到a(7)的数据依次为“4,15,11,7,9,16,12”经过该程序段“加工”后,文本框text1中显示的内容是( )
A.4 7 9 B.16 15 12
C.4 15 11 7 D.4 7 9 11
7.有如下程序段
Dim a(1 To 6) As String i = 6
Text1.Text = ""
Do While i > 1
k = i
For j = 1 To i - 1
If a(k) < a(j) Then k = j
Next j
tmp = a(k): a(k) = a(i): a(i) = tmp
Text1.Text = a(i)
i = i - 1
Loop
其中数据元素 a(1)到 a(6)的值依次为“12”、“34”、“8”、“9”、“77”、“23”,执行该程序段后,文本框 Text1 中显示的内容为
A.9 B.8 C.12 D.23
8.下列VB程序段实现以下功能,产生10个1~100之间的随机整数存储数组a中,引入一个数组 b,使得a(b(i))升序,即a(b(1) )≤a(b(2) )≤a(b(3))......≤a(b(9))≤a(b(10))。
For i= 1 To 10
___(1)___
a(i)= Int(Rnd() *100)+1
Next i
For i= 1 To 9
For j = 10 To i+ l step -1
If (2) Then t=b(j): b(j)= b(j-1): b(j-1)=t
Next j
Next i
上述程序段个划线处的代码分别为
A.(1)b(i) =i (2)a(b(j))C.(1)b(i)=1 (2)a(b(j))9.对一组数据采用冒泡排序算法进行排序,若第一趟排序完成后的数据序列为:31,24,23,15,20,10,则该数据序列的原始顺序不可能的是( )
A.24,23,15,31,10,20 B.24,23,15,20,31,10
C.24,31,23,15,10,20 D.23,24,15,20,31,10
10.有如下VB程序段
Dim a(1 To 6)As Integer
For i=1 To 6
a(i)=Int(Rnd()*45)*2+10
Next i
For i=1 To 2
For j=2 To 6-i
If a(j)\10〉a(j-1)\10 Then
temp=a(j):a(j)=a(j-1):a(j-1)=temp
End If
Next j
Next i
执行上述程序段后,下列选项中,a(1)到a(6)各元素值可能的是( )
A.84,98,93,84,62,30
B.70,60,10,28,18,14
C.34,44,36,14,16,94
D.74,32,66,46,38,28
11.有如下VB程序段:
生成6个随机正整数,依次存入数组元素a(1)到a(6),代码略
For i = 1 To 5
k = i
For j = 5 To i + 1 Step -1
If a(k) Mod 2 <= a(j) Mod 2 Then k = j
Next j
If k <> i Then t = a(k): a(k)= a(i): a(i)= t
Next i
执行该程序段后,a(1)到a(6)各元素值可能的是( )
A.3, 7, 4, 4, 5, 8 B.2, 4, 6, 8, 10, 12 C.1, 3, 7, 2, 6, 3 D.1, 3, 5, 2, 4, 6
12.采用选择排序算法对数据系列“1,3,5,2,4,0”完成降序排序,则需要交换的次数为( )
A.2次 B.3次 C.4次 D.5次
13.采用冒泡排序算法对数据序列“8,7,2,3,9,6,5”完成升序排序,排序2趟后,正确的顺序是( )
A.2,3,8,7,5,6,9 B.2,3,8,7,9,6,5
C.2,3,5,6,7,8,9 D.2,3,7,5,6,8,9
14.有如下VB程序段:
a(1)=7:a(2)=3:a(3)=5:a(4)=2:a(5)=9:a(6)=6
p=2*Int(Rnd*3)+1
For i= p To 5
k=i
For j=i+1 To 6
If a(j) < a(k) Then k=j
Next j
If k <>i Then
temp=a(i):a(i)=a(k):a(k)=temp
End If
Next i
执行该程序段后,a(1)~a(6)各元素的值不可能是( )
A.7,3,5,2,6,9 B.7,3,2,5,6,9
C.7,2,3,5,6,9 D.2,3,5,6,7,9
15.有如下 VB 程序段:
For i = 1 To 8
a(i) = Int(Rnd * 7) + 1
Next i
For i = 1 To 3
For j = 1 To 8 - 2 * i If a(j) Mod 7 > a(j + 2) Mod 7 Then
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
Next j
Next i
For i = 1 To 8
ch(i) = Chr(a(i) + Asc("A") - 1)
Next i
执行该程序段后,ch(1)~ch(8)各元素值不可能的是( )
A.AACBFBFE B.GGABCDDE C.ABBBCDDE D.ABBCDDEG
试卷第1页,共3页
试卷第1页,共3页
参考答案:
1.B
【详解】本题主要考查选择排序算法。第一次交换200和18,交换后变为“ 200, 33, 5, 26, 86, 0, 60,18”,第二次交换86和33,交换后变为“ 200,86, 5, 26, 33, 0, 60,18”,第三次交换5和60,交换后变为“ 200,86,60, 26, 33, 0, 5,18”,第四次交换26和33,交换后变为“ 200,86,60,33, 26, 0, 5,18”,第五次交换0和18,交换后变为“ 200,86,60,33, 26, 18, 5,0”,故使用选择排序,则需要交换的次数是5,故本题选B选项。
2.B
【详解】本题主要考选择排序算法。选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。21万和15万需要交换一次,21万和19万需要交换依次,故需要进行数据互换的次数是2,故本题选B选项。
3.D
【详解】本题主要考查排序算法知识点。分析程序可知,①处通过嵌套for循环比较a(i)与a(j)的大小,实现降序排序,若a(i)4.D
【详解】本题主要考查VB程序排序知识点。i等于1时,第一遍循环后,s= "06172534",y=ch(1)="0",i等于2时,第二遍循环后,s= "04172536",y= y & ch(2)=“04”,排除A、B、C选项,依此类推,程序结束时,y="04152637",故该程序段运行后,标签Label1中显示的内容是04152637,故本题选D选项。
5.B
【详解】本题主要考查VB程序的执行。n=3,s=d(3)="t",i=1时, 内层循环完,d(l) d(6)的值分别为:“a”、“e”、“t”、“h”、“f”、“r”,s="t",i=2时,内层循环完,无交换,i=3时,内层循环完,d(l) d(6)的值分别为:“a”、“e”、“f”、“h”、“r”、“t”,s="t-r-f",已完成升序,后面再无交换,故该程序运行结束后,标签Labell中显示的内容为t-r-f,故本题选B选项。
6.A
【详解】本题主要考查VB程序的执行。i=1时,执行内层循环后数组元素a(1)到a(7)的数据依次为“4,7,15,11,9,12,16”,s=s+str(a(1))=“4”,i=2时,执行内层循环后数组元素a(1)到a(7)的数据依次为“4,7,9,15,11,12,16”,s=s+str(a(2))=“4 7”,i=3时,执行内层循环后数组元素a(1)到a(7)的数据依次为“4,7,9,11,15,12,16”,s=s+str(a(3))=“4 7 9”,程序结束,故经过该程序段“加工”后,文本框text1中显示的内容是4 7 9,故本题选A选项。
7.A
【详解】本题主要考查排序算法。该程序通过for循环实现数组的升序,每次内层循环完,更新Text1.Text 的值,故程序结束后,文本框 Text1 中显示的内容为程序结束时a(2)的值,程序结束后,数据元素 a(1)到 a(6)的值依次为“8”、“9”、“12”、“23”、“34”、“77”,故a(2)=9,故本题选A选项。
8.A
【详解】本题主要考查VB程序的执行。数组b为数组a的10个下标,故第一个for循环将数组b(1)到b(10)分别赋值为1到10,第二个嵌套for循环完成数组a的升序排序,当a(b(j))9.D
【详解】本题主要考查冒泡排序算法。冒泡排序是重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。第一趟排序完成后的数据序列为:31,24,23,15,20,10,最大值在左边,最小值在右边,所以是降序排序,A选项从右端开始比较,将最大值放到左边,可得到题干顺序,B和C选项同理,D选项第一趟排完后是31,23,24,15,20,10,故本题选D选项。
10.C
【详解】本题考查VB排序程序相关知识点
Int(Rnd()*45)*2+10生成的是[10,100)的两位数,第一个for循环实现给a(1)到a(6)随机赋值。第二个for循环嵌套实现两次排序(比较两位数的十位大小),当i=1时,a(1)到a(5)参与降序排序,i=2时,a(1)到a(4)参与降序排序。所以当序列为34,36,14,44,16,94时执行完程序后,得到的序列就是C选项。故本题选C选项
11.B
【详解】本题考查排序算法相关知识。从双重For循环可知,此处是选择排序,选择排序将所选出的数值放入指定的位置。根据内循环中If a(k)Mod 2 <= a(j)Mod 2 Then k=j,可知选出除以2余数最小的数字,除以2的余数是0或者1,若数组中有偶数,则排序后排在最前面的一定是偶数。选项ACD,数组中都有偶数,但没有排在前面,故错误,选项B数组全都是偶数,则该排序可能,故本题选B。
12.B
【详解】本题主要考查选择排序算法知识点。选择排序:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾,以此类推,直到全部待排序的数据元素的个数为零。第一次5和1进行交换,交换后为5,3,1,2,4,0,第二次是3和4进行交换,交换后为5,4,1,2,3,0,第三次是1和3进行交换,交换后是5,4,3,2,1,0,已完成降序排序,故需要交换的次数是3次,故本题选B选项。
13.A
【详解】本题主要考查冒泡排序算法。冒泡排序,它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来,走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。排序第1趟后,顺序为2,8,7,3,5,9,6,排序第2趟后,顺序为2,3,8,7,5,6,9,故本题选A选项。
14.C
【详解】本题考查VB程序段。根据代码p=2*Int(Rnd*3)+1,可知p的取值是1,3,5。双重For循环是选择排序,并且是一个升序排序,若p=1,For i=1 To 5,实现全部排序,排序后a(1)至a(6)各元素的值是2,3,5,6,7,9。若p=3,For i=3 To 5,a(3)至a(6)实现升序排序,排序后a(1)至a(6)各元素的值是7,3,2,5,6,9。若p=5,则For i=5 To 5,a(1)至a(6)各元素的值和初始值一样。故本题a(1)至a(6)各元素的值不可能是选项C的数值,本题选C。
15.D
【详解】本题考查VB程序段,冒泡排序相关知识。可先将选项根据字母关系转化为数字,则A:11326265,B:77123445,C:12223445,D:12234457。从第一段For循环可知,a(i)的范围是[1,7],第二段For循环是一个类似的冒泡排序过程,由For j=1 To 8-2*i和If a(j) Mod 7 >a(j + 2)Mod 7可知,数组奇数项和偶数项分别升序排序,并且根据除以7的余数大小,进行排序,由此判断,选项ABC都可能出现,而选项D:12234457,最后一项除以7的余数是0,显然不应该在最后,故本题ch(1)至ch(8)各元素值不可能的是选项D的字母,故选D。
答案第1页,共2页
答案第1页,共2页

展开更多......

收起↑

资源预览