- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- + 算法实例
- 枚举算法
- 解析算法
- 排序算法
- 查找算法
- 递归算法
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)随机数排序程序。程序功能如下:窗体加载时生成[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
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

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 SubPrivate 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
(加试题)用如下对分查找算法 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
执行完上述代码后,根据最终变量值判断下列表达式,其中成立的是
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 |
(加试题)有如下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中显示的内容是
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.5 | B.7 | C.8 | D.28 |
(加试题)某排序算法思想如下:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。例如(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
For i = 1 To n
End Sub
为此,编写了一个 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 ;改正:_______________
Loopa(j) = a(j + 1) ;改正:_______________
Next iFor i = 1 To n
List2.AddItem Str(a(i))
Next iEnd Sub
(加试题)对分查找的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”。若该程序执行后得到的结果是
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.1 | B.2 | C.3 | D.4 |
(加试题)某算法的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”。若该程序执行后得到的结果是
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 |
(加试题)下列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
横线处应填写

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 10 | B.i \ 10 ^ j Mod 10 |
C.i \ 10 ^ (j Mod 10) | D.(i \ 10) ^ j Mod 10 |
用选择排序每次选出最大值对数据7,6,3,9,2进行降序排序,两轮后的结果是( )。
A.2,3,6,9,7 | B.9,6,3,7,2 | C.9,7,3,6,2 | D.9,7,6,3,2 |
现有36个人搬36块砖,男的搬4块,女的搬3块, 2个小孩抬一块。要求一次正好全搬完,问男、女、小孩各需多少人?如果用编程的方法求解,以下算法最合适的是( )。
A.解析法 | B.枚举法 | C.冒泡排序法 | D.选择排序法 |
关于对分查找和顺序查找算法的叙述,正确的是( )。
A.顺序查找需要排序,效率低;对分查找不需要排序,效率高。 |
B.顺序查找不需要排序,效率低;对分查找需要排序,效率高。 |
C.顺序查找不需要排序,效率高;对分查找需要排序,效率低。 |
D.顺序查找需要排序,效率高;对分查找不需要排序,效率低。 |