4.5排序同步练习人教版信息技术选修1
展开一、选择题
1.有如下 VB 程序段:
cunt = 0: n = 7: i = 1 D While i <= n
If a(i) > a(i + 1) Then
cunt = cunt + 1
t = a(i): a(i) = a(i + 1): a(i + 1) = t
End If
If i = n Then
i = 0: n = n - 1
i = i + 1
Lp
Text1.Text = Str(cunt)
数组元素 a(1)~a(8)的值依次是“15,2,1,17,19,14,25,26”,执行该程序段后,文本框 Text1 中显示的是( )
A.4B.5C.6D.7
2.利用冒泡排序给数组[15,78,88,23,69,71,20,53]升序排序,第三遍冒泡加工之后的数据结果是( )
A.[15,20,23,78,88,69,71,53]B.[15,20,23,53,78,88,69,71]
C.[15,78,23,69,71,20,53,88]D.[15,23,69,71,20,53,78,88]
3.有如下VB程序段:
Fr i=1 T n-1 Step 2
Fr j=1T((n+1)\2)*2-i-2 Step 2
If a(j)>a(j+2)Then
t=a(j):a(j)=a(j+2):a(j+2)=t
End If
Next j
Fr j= ①
If a(j)>a(j-2)Then
t=a(j):a(j)=a(j-2):a(j-2)=t
End If
Next j
Next i
执行该程序段后,实现了对数组元素a(1)~a(n)中的奇数位置从小到大排序,偶数位置从大到小排序。则代码中①处的语句可为( )
A.(n\2)*2 T i+1 Step-2B.(n\2)*2 T i+3 Step-2
C.i+1 T(n\2)*2 Step2D.i+1 T (n\2)*2-2 Step2
4.采用选择排序算法对数据序列“10,7,12,5,6,3”进行排序,第一轮排序后的结果为“12,7,10,5,6,3”,则整个序列完成排序的比较次数和交换次数分别是( )
A.15,6B.11,5C.15,3D.11,4
5.一个序列经过一趟冒泡排序后的结果是:10,21,13,24,28,则原始序列不可能是( )
A.21,13,24,28,10B.21,10,24,28,13C.21,10,24,13,28D.21,24,13,28,10
6.某数据序列为“18,7,15,33,42,29,63,81”,采用选择排序算法将数据从小到大排序,那么排序过程中需要交换元素的次数是( )
A.6B.5C.4D.3
7.某排序算法的 VB 程序段如下:
n = 8: f = 1: c = 0
Fr i = 1 T n \ 2 - 1
Fr j = 1 T n - 2 * i
If f * a(j) < f * a(j + 2) Then
t = a(j): a(j) = a(j + 2): a(j + 2) = t
c = c + 1
End If
f = -f
Next j
Next i
数组元素 a(1)到 a(8)的初始值依次为:“16,31,42,38,35,29,27,15”,执行该程序段后,变量 C的值为( )
A.6B.7C.8D.9
8.现有三个整数序列:“1,2,3,4,5”“7,1,6,8,3”“9,8,7,6,5”。用选择排序算法分别对三个序列进行升序排序,比较次数依次为x、y、z,则下列关系正确的是( )
A.x=y=zB.x>y>zC.y>z>xD.z>y>x
9.采用选择排序算法对数据序列“12,23,24,15,11,10”完成升序排序,则需要交换的次数为( )
A.3 次B.4 次C.5次D.6 次
10.假定一组记录为(46,79,56,64,38,40,84,43),在冒泡排序的过程中,进行第一趟排序结束时,元素40不可能在哪个元素之后( )
A.38B.46C.56D.64
二、填空题
11.n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相信两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Cmmaiid1,在列表框List2 中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如下图所示,
实现上述功能的VB代码如下:
Dim a(1 T 8) As Integer
Dim n As Integer
Private Sub Frm_Lad()
'n=8,排序前数据存储在数组a中,并在列表框Listl中显示
'代码略
End Sub
Private Sub Cmmand1_Click()
Dim flag As Blean
i = 1
flag = True
D While '改错
flag = False
Fr j = n T i + 1 Step -1
If a(j) < a(j - 1) Then
k = a(j): a(j) = a(j - 1): a(j - 1) = k
flag = True
End If
Next j
i = i + 1
Lp
Label3.Captin = "排序过程的加工遍数为" + '填空
Fr i = 1 T n
List2.AddItem Str(a(i))
Next i
End Sub
(1)代码“Private Sub Cmmand1_Click()”中的Click是___________。(单选,填字母:A.对象名/B.属性名/C.事件名)
(2)程序代码中,D While语句加框处有错,请改正。__________________
(3)程序代码中,将Label3.Captin赋值语句补充完整。_________________
(4)程序代码中,flag值为___________表示某一遍加工中发生过交换。
12.某书城五种畅销图书的市场价格(单位:元)存放在数组d中,如下表所示。现对这些数据进行升序排列,若采用冒泡排序算法自下而上进行比较和交换,那么在第一遍加工后,d[2]的值是______ 。
13.下列VB程序的功能是:程序运行时,单击命令按钮Cmmandl后,产生10个[1,999]范围内互不相同的随机整数,依次显示在列表框List1中,然后将它们按从小到大的顺序排序,排序结果显示在列表框List2中。数组a用于存储产生的10个随机整数,函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False。
(1)虚线框内程序段所采用的排序算法名称是 。(填:冒泡排序/选择排序)
(2)在程序(1)和(2)划线处,填入适当的语句或表达式,把程序补充完整。
Dim a(1 T 10) As Integer
Functin f(x As Integer) As Blean ′代码略
End Functin
Private Sub Cmmandl_Click()
Dim n As Integer ′n用于统计已经产生的随机整数个数
Dim i As Integer.j As Integer
Dim x As Integer.k As Integer
Randmize ′初始化Rnd函数
n=0
List1.Clear ′清除列表框中内容
List2.Clear
D While n<10
x=Int(Rnd*999)+1 ′产生[1,999]范围内的随机整数
If Nt f(x) Then
n=n+1
a(n)="x"
List1.AddItem Str( (1) )
End If
Lp
Fr i="1" T 9 ′进行排序
Fr j="10" T i+1 (2)
If a(j)k=a(j):a(j)=a(j-1):a(j-1)=k
End If
Next j
Next i
Fr i="1" T 10
List2.AddItem Str(a(i))
Next i
End Sub
14.将6名选手的歌唱比赛成绩存放在数组a中,如下表所示:
若按升序排列,采用冒泡排序算法自右向左进行比较和交换,第二轮排序之后a(4)中的值为________
15.为了合理有效的共享学校图书馆自修室资源,学校实行自修室座位网上预约,学生
按学号登录系统进行预约(学号编码为六位数字,第一二位代表年级,第三四位代表班级,第五 六位代表顺序号。如 030102 表示高三 1 班 2 号同学)。为了方便老师管理,预约结束由电脑进行 排位。排位规则如下:
①年级优先原则,先高三再高二最后高一
②班号优先原则,同年级的班号小的排前面
③序号优先原则,同班级同学序号小的排前面 小张根据以上要求编写了 VB 程序,程序界面如下图所示:
实现上述功能的 VB 程序代码如下,请回答下列问题:
⑴分析程序,可知调用的数据库的名称为____________________________________。
⑵请在划线处填入合适的代码。
Dim a(200) As String
Cnst num = 200
Dim temp As String
Private Sub Frm_Lad() ‘此处代码实现将预约信息存储到数组 a(i)中
Dim cn As New ADODB.Cnnectin
Dim rs As New ADODB.Recrdset
cn.Open "prvider=.12.0;data surce=" & App.Path & "\" &"stu.accdb"
rs.Open "select * frm student"
i = 1
D While Nt rs.EOF
a(i) = rs("xueha")
rs.MveNext
①____________
Lp
rs.Clse
cn.Clse
List1.AddItem "预约号" & " " & "学号"
Fr i = 1 T num
List1.AddItem Str(i) & " " & a(i)
Next i
End Sub
Private Sub Cmmand1_Click()
Fr i = 1 T num - 1
Fr j = num T i + 1 Step -1
If ②____________ Then
temp = a(j) a(j) = a(j - 1) a(j - 1) = temp
End If
Next j
Next i
List2.Clear
List2.AddItem "座位" & " " & "学号"
Fr i = 1 T num
List1.AddItem Str(i) & " " & a(i)
Next i
End Sub
Functin check(x As String, y As String) As Blean
Dim x1 As Integer, x2 As Integer, x3 As Integer
Dim y1 As Integer, y2 As Integer, y3 As Integer
x1 = Val(Mid(x, 1, 2)) : x2 = Val(Mid(x, 3, 2)) : x3 = Val(Mid(x, 5, 2))
y1 = Val(Mid(y, 1, 2)) : y2 = Val(Mid(y, 3, 2)) : y3 = Val(Mid(y, 5, 2))
If x1 < y1 Or x1 = y1 And x2 > y2 Or ③__________ Then
check = True
Else
check = False
End If
End Functin
三、操作题
16.根据申请人的QA和QB值,从m个申请人中挑选2人组队参加某挑战赛。条件一是2人的QA值都必须大于指定参数h;条件二是2人的QA值之差(较大值减较小值)小于h。在满足上述两个条件的所有2人组合中,挑选QB值之和最大的一个组合。(QA、QB和h的值均为正整数)
编写VB程序,实现上述挑选功能。运行程序,在文本框Text1中输入参数h后,单击“挑选”按钮Cmmand1,在列表框List1中按QA值降序显示满足条件一的申请人信息,最后在标签Label1中显示组队结果。程序运行界面如图所示。
请回答下列问题:
(1)若要清空列表框List1,能实现该功能的语句是_________(单选,填字母:A.List1. Captin = "" / B.List1.Text = "" / C.List1. Clear)。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有错,请改正。
Cnst m = 20 ’m表示申请人个数
Dim id(m)As Integer,qa(m)As Integer,qb(m)As Integer
Private Sub Cmmand1_Click()
Dim i As Integer j As Integer,k As Integer,t As Integer,max As Integer
Dim h As Integer,n As Integer ’变量n存储满足条件一的申请人个数
Dim s As String
’读取全部申请人的编号、QA和QB值,分别存入数组id、qa和qb,代码略
h = Val(Text1. Text):n = m
Fr i = 1 T m — 1
k = i
Fr j = i + 1 T m
If qa(j)> qa(k)Then k = j
Next j
If Then
If k <> i Then
t = qa(i):qa(i) = qa(k):qa(k) = t
t = qb(i):qb(i) = qb(k):qb(k) = t
t = id(i):id(i) = id(k):id(k) = t
End If
Else
n = ①
Exit Fr ’Exit Fr表示退出循环
End If
Next i
’满足条件一的申请人信息显示在列表框Listl中,代码略
max = 0:s = “没有满足条件的组合”
’在满足条件的组合中,寻找QB值之和最大的组合,若有并列,只保留第一个
Fr i = n T 2 Step — 1
j = i — 1
D While ②
If qb(i)+ qb(j) > max Then
s = "组队结果:" + Str(id(i)) + "号," + Str(id(j)) + "号"
___③
End If
j = j — 1
Lp
Next i
Label1. Captin = s
End Sub
d[1]
26
d[2]
32
d[3]
20
d[4]
29
d[5]
36
参考答案:
1.C
2.B
3.B
4.C
5.D
6.C
7.C
8.A
9.A
10.C
11. C i<=n-1 and flag=true Str(i-1) true
12.26
13.(1)冒泡排序 (2)a(n) Step-1
14.82
15. stu.accdb i=i+1 check(a(j - 1), a(j)) x1 = y1 And x2 = y2 And x3 > y3
16.(1)C
(2)①i — 1
②j > = 1 And qa(j)- qa(i) < h
或j > 0 And Abs(qa(i)-qa(j)) < h 或等价表达式
③max = qb(i) + qb(j)
(3)qa(k) > h
4.6趣味应用同步练习人教版信息技术选修1: 这是一份信息技术中图版 (2019)本册综合复习练习题,共7页。试卷主要包含了选择题,操作题等内容,欢迎下载使用。
4.4查找同步练习人教版信息技术选修1: 这是一份高中信息技术中图版 (2019)必修2 信息系统与社会本册综合随堂练习题,共11页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。
2.4调试程序同步练习人教版信息技术选修1: 这是一份高中中图版 (2019)本册综合复习练习题,共11页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。