(加试题)随机数排序程序。程序功能如下:窗体加载时生成[10,100]范围内的随机整数10 个存储在数组 a 中,并在列表框 List1 中显示原始数据,单击“排序”按钮,这 10 个数据按 降序排序后显示在列表框 List2 中。程序运行效果如图所示。实现上述功能的 VB代码如下,但 加框处代码有错,请改正。

 

 
Dim a(1 To 10) As Integer
Private Sub Command1 Click()
Dim i As Integer, j As Integer, x As Integer p = True
i = 1
Do While i <= 9 And p p = False
For j = 10 To i + 1 Step -1
If   a(j)< a(i)   Then   '①________
k = a(j): a(j) = a(j - 1): a(j - 1) = k: p = True
End If
Next j
i = i + 1
Loop
For i = 1 To 10

List2.AddItem Str(a(i)) Next i

End Sub
Private Sub Form_Load() Dim i As Integer
List1.Clear
Randomize ' 初始化随机函数 Rnd
For i = 1 To 10
a(i) =   Int(Rnd * 100)   '②________ List1.AddItem   Str(a(i))
Next i
End Sub
当前题号:1 | 题型:填空题 | 难度:0.99
(加试题)用如下对分查找算法 VB.程序段,对数组 a 中 7 个有序数据“20,30,35,42,46,50,53”进行查找。
i = 1 : j = 7 : x = 45
Do While i <= j
m = (i + j) \ 2
If a(m) = x   Then   Exit Do   ‘Exit Do 退出 Do 循环 If a(m) > x Then
j = m - 1
Else
i = m + 1
End   If
Loop
执行完上述代码后,根据最终变量值判断下列表达式,其中成立的是
A.i = j
B. i = m + 1
B.j = m - 1
C.j = m
当前题号:2 | 题型:选择题 | 难度:0.99
(加试题)有如下VB程序段:
Dim a(1 To 8) As Integer
a(1) = 12: a(2) = 44: a(3) = 65: a(4) = 26
a(5) = 48: a(6) = 91: a(7) = 98: a(8) = 13
n = 8: t = 0
For i = 1 To n - 1
k = i
For j = i + 1 To n
If a(j) < a(k) Then k = j
Next j
If k <> i Then
temp = a(i): a(i) = a(k): a(k) = temp: t = t + 1
End If
Next i
Text1.Text = Str(t)
该程序段运行后,文本框Text1中显示的内容是
A.5B.7C.8D.28
当前题号:3 | 题型:选择题 | 难度:0.99
(加试题)某排序算法思想如下:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。例如(9,3,1,4)升序排序;第一步 3 插入到有序记录(9),得到(3,9);第二步 1 插入到有序记录(3,9),得到(1,3,9);第三步 4 插入到有序记录(1,3,9),得到最终有序记录为“1,3,4,9”。
为此,编写了一个 VB 程序,功能如下:运行程序,窗体加载时随机产生 10 个随机整数,并在列表框 List1 中依次显示排序前数据,单击“排序”按钮 Command1,在列表框 List2 中显示经过上述排
序算法后的数据,运行结果如图所示。实现上述功能的 VB 代码如下,但加框处代码有错,请改正。

Const n = 10
Dim a(1 To n) As Integer '生成 n 个随机数,存储在 a 数组,代码略
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
For i = 2 To n
t = a(i)
j = i - 1
Do While t < a(j)
a(j + 1) = a(j)
j = j - 1

If  j = 1   Then Exit Do  ;改正:_______________

Loop

a(j) = a(j + 1)    ;改正:_______________

Next i
For i = 1 To n

List2.AddItem Str(a(i))

Next i
End Sub
当前题号:4 | 题型:填空题 | 难度:0.99
(加试题)对分查找的VB程序段如下:
key=78
i=1
j=8
k=1
Do While i<=j
m= fix((i+j)/2)
if d(m)=key Then
Label1.Caption=k
Exit do
End if
If d(m)<key Then
i=m+1
else
j=m-1
End If
k=k+1
Loop
数组元素a(1)到a(8)的值依次为“22,34,41,53,66,71,78,91”。若该程序执行后得到的结果是
A.1B.2C.3D.4
当前题号:5 | 题型:选择题 | 难度:0.99
(加试题)某算法的VB程序段如下:
For i = 1 To 3
For j = i To 9
If a(j) > a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
End If
Next j
Next i
数组元素a(0)到a(9)的值依次为“25,64,15,40,74,80,27,65,84,53”。若该程序执行后得到的结果是
A.64 74 80 40 65 84 53 27 25 15
B.64 40 80 74 65 84 53 27 25 15
C.64 25 15 40 74 80 27 65 84 53
D.84 80 74 65 64 53 40 27 25 15
当前题号:6 | 题型:选择题 | 难度:0.99
(加试题)下列VB程序的功能是:求得1000以内的所有水仙花数,并在list1中显示。水仙花数是指一个n位数(n)=3),它的每个位上的数字的n次幂之和等于它本身(例如:1^3+5^3+3^3=153)

Private Sub Command1_Click()
List1.clear
Dim a As Integer
For i = 1 To 1000
s = 0
l = Len(Str(i)) - 1
For j = 0 To l - 1
a = 1
s = s + a ^ 3
Next j
If i = s Then
List1.AddItem i
End If
Next i
End Sub
横线处应填写
A.i / 10 ^ j Mod 10B.i \ 10 ^ j Mod 10
C.i \ 10 ^ (j Mod 10)D.(i \ 10) ^ j Mod 10
当前题号:7 | 题型:填空题 | 难度:0.99
选择排序每次选出最大值对数据7,6,3,9,2进行降序排序,两轮后的结果是( )。
A.2,3,6,9,7B.9,6,3,7,2C.9,7,3,6,2D.9,7,6,3,2
当前题号:8 | 题型:选择题 | 难度:0.99
现有36个人搬36块砖,男的搬4块,女的搬3块, 2个小孩抬一块。要求一次正好全搬完,问男、女、小孩各需多少人?如果用编程的方法求解,以下算法最合适的是( )。
A.解析法B.枚举法C.冒泡排序法D.选择排序法
当前题号:9 | 题型:选择题 | 难度:0.99
关于对分查找和顺序查找算法的叙述,正确的是( )。
A.顺序查找需要排序,效率低;对分查找不需要排序,效率高。
B.顺序查找不需要排序,效率低;对分查找需要排序,效率高。
C.顺序查找不需要排序,效率高;对分查找需要排序,效率低。
D.顺序查找需要排序,效率高;对分查找不需要排序,效率低。
当前题号:10 | 题型:选择题 | 难度:0.99