VB选考冒泡排序综合应用题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档