题库 高中信息

题干

n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相信两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2 中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如下图所示,

实现上述功能的VB代码如下:
Dim a(1 To 8) As Integer
Dim n As Integer
Private Sub Form_Load()
'n=8,排序前数据存储在数组a中,并在列表框Listl中显示
'代码略
End Sub
Private Sub Command1_Click()
Dim flag As Boolean
i = 1
flag = True
Do While   '改错
flag = False
For j = n To 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
Loop
Label3.Caption = "排序过程的加工遍数为" +       '填空
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
(1)代码“Private Sub Command1_Click()”中的Click是___________。(单选,填字母:
A.对象名/B.属性名/C.事件名)
(2)程序代码中,Do While语句加框处有错,请改正。__________________
(3)程序代码中,将Label3.Caption赋值语句补充完整。_________________
(4)程序代码中,flag值为___________表示某一遍加工中发生过交换。
上一题 下一题 0.99难度 填空题 更新时间:2019-07-09 06:08:48

答案(点此获取答案解析)

同类题5

   “中国好声音”节目组要小杰用VB编写一个程序:现场将有900个观众,要在900个观众中产生10个中奖号码的程序,每位观众用三位数字进行编号,要求产生的10个号码不能重复,并且升序排列输出。

①检查产生号码是否重复:把产生的中奖号码放在数组a中,新产生的号码与已经产生的号码进行一一对比,如果找到相等的数,则重新产生新号码。

②找到新产生号码存放的数组下标:从下标为1的数组元素开始,新号码(第i个号码)分别与他们进行一一比较,找到第一个比新号码大的数,该数所在的下标就是新号码应存放的下标。如果在已经产生的数中没有找到比新号码大的数,则新号码应存放在下标为i的数组元素中。下表以产生第5个号码为例,如果产生的号码是130,第一个比他大的数是a(2),下标为2的数组元素应存放新号码;如果产生的号码是300,则新号码应存放在下标为5的数组元素中。


③移动数组元素到新的位置:如果在已经产生的号码中找到比新号码大的数,从上一个产生的号码开始,到新号码应存放的数组元素,依次把他们向后面移动。以②中产生130为例,从a(4)开始,让a(5)的值等于a(4),a(4)的值等于a(3),依次类推,直到新号码应存放的数组元素a(2)为止。

④将新产生的号码放在相应的数组元素中。

程序运行的界面如下图所示,实现上述功能的VB程序代码如下:


Dim a(10) As Single
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim temp As Single, k As Integer   'temp产生随机数,k随机数存放数组元素的下标
Randomize
a(1) = Int(Rnd() * 900 + 100)
For i = 2 To 10
temp = Int(Rnd() * 900 + 100)
If seach(temp, i - 1) = True Then
i = i - 1
Else
k = i
For j = 1 To i - 1
If   ①temp < a(i)  Then k = j: Exit For  
Next j
For j = i - 1 To k Step -1
a(j + 1) = a(j)
Next j
②
End If
Next i
List1.Clear
For i = 1 To 10
List1.AddItem Str(a(i))
Next i
End Sub
'函数实现在数组a中,从下标为1的数组元素到下标为t数组元素,查找有无s的数值
Function seach(s  As Single, t As Integer) As Boolean
Dim i As Integer
seach = False
For i = 1 To t
If ③     Then seach = True: Exit For
Next i
End Function
(1)程序代码中①划线处有错,应改为:___________________
(2)程序代码中划线处②应填入_________________________
(3)程序代码中划线处③应填入_________________________