VB选考冒泡排序综合应用题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB选考冒泡排序综合应用题
姓名班级
第一题:2017年11月选考真题
小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。
实现上述功能的VB程序如下,请完成划线处填空。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
Dim bottom As Integer
'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略
bottom = n
i = 1
Do While i <= bottom - 1
For j = bottom To i + 1 Step -1
If ① Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
ElseIf a(j) = a(j - 1) Then ' 相邻两个数据相等,进行剔除处理
②
bottom = bottom - 1
End If
Next j
③
Loop
= " "
For ④
= + Str(a(i))
Next i
End Sub
第二题:2019年4月选考真题
小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。程序界面如下图:
算法的VB程序段如下,请完成划线处填空。
’待排序数据存储在数组a中(a(1)~ a(n)),要求升序排列
For i = 1 To (n - 1) \ 2
For ①
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
For i = 1 To n \ 2
②
If a(j) > a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t
Next i
For ③
t = a(i): j = i - 1
Do While t < a(j)
a(j + 1) = a(j): j = j - 1
Loop
④
Next i
第三题:合唱队列是按队员的身高进行排列,形成中间高两边有序降低的队形;例如有六个队员“已、戊、丁、丙、乙和甲”的身高依次由小到大,则排列后的顺序为“戊、丙、甲、乙、丁、已”。小李用VB编写模拟“合唱队列”程序,功能如下:在文本框Text1中输入各队员身高,输入结束并回国,由输入的各队员身高分别存入数组a中;单击“合唱队列”按钮command1,对数组a的元素进行有序排列后,将各元素存入数组C中形成合唱队列,并将结果显示在文本框Text2中。程序运行界面如图所示:甲、乙、丙、丁、戊和已。
实现上述功能的VB程序如下:
实现上述功能的VB程序如下,请在划线处填入合适代码。
Const n = 5
Dim a(1 To n) As Integer
Dim i As Integer
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '回车键的ascii码13
①
If i <= n Then
a(i) = Val()
em a(i)
If i < n Then
= ""
Else
= "已输入完毕!!"
End If
End If
End If
End Sub
Private Sub Command1_Click()
Dim c(1 To n) As Integer
Dim right As Integer, left As Integer, i As Integer
For i = 1 To n - 1
For j = 1 To n - i
If ② Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
m = (1 + n) \ 2
left = m: right = m
c(m) = a(n): i = 2
Do While i <= n
If i Mod 2 = 0 Then
right = right + 1
c(right) = a(n - i + 1)
Else
③
c(left) = a(n - i + 1)
End If
i = i + 1
Loop
④
For i = 2 To n
s = s + "," + Str(c(i))
Next i
on = s
End Sub
第四题:小王编写V B 程序功能如下:单击“生成数组”按钮C ommand1,则随机生成20个大写字母,分别存储到数组a中,对数组a的元素进行升序排列,并在标签Label1 中显示;再单击“最长连续字母串”按钮C ommand2,则在排序后的数组a中查找连续个数最多(忽略重复数值)的一组字符(即:连续字符串),若有两组连续字符个数一样多,则取字母ASCII值大的一组,将连续字符串显示在标签Label2 中。运行界面如第17 题图所示。
若实现上述功能的程序如下,请在划线处填写合适代码,使程序正常运行。
Const n = 20
Dim a(1 To n) As String
Private Sub Command1_Click()
Dim i As Integer, s As String, j As Integer
Randomize
For i = 1 To n
①