- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- + 算法实例
- 枚举算法
- 解析算法
- 排序算法
- 查找算法
- 递归算法
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
用枚举算法求解“找出所有满足各位数字之和等于5的三位数”时,在下列所列举的数值范围内,算法执行效率最高的是( )
A.从0到999 | B.从100到999 |
C.从100到500 | D.从104到500 |
有如下VB程序段:
For i = 1 To 2
For j = 5 To i + 1 Step -1
If d(j) >d(i) Then
t = d(j): d(j) = d(i): d(i) = t
End If
Next j
List1.additem str(d(i+1))
Next i
数组元素d(1)到d(5)的值依次为34,25,46,17,78,经过该程序段“加工”后,则List1列表框中显示的结果为( )
For i = 1 To 2
For j = 5 To i + 1 Step -1
If d(j) >d(i) Then
t = d(j): d(j) = d(i): d(i) = t
End If
Next j
List1.additem str(d(i+1))
Next i
数组元素d(1)到d(5)的值依次为34,25,46,17,78,经过该程序段“加工”后,则List1列表框中显示的结果为( )
A.78 46 34 17 25 | B.25 34 |
C.17 25 34 46 78 | D.78 46 |
插入排序。小明用VB设计程序,主要功能如下:随机产生10个介于1到100之间的正整数数列,按升序排序后显示在List1列表框中,在文本框Text1中输入1个100以内的正整数,单击“插入”按钮Command1后将其插入到数列中,并保持数列仍然有序,显示在列表List2中,同时在标签Label4中显示插入的位置,程序界面如下图所示。

实现上述功能的VB程序代码如下,但是有两个地方有误,请改正。
Dim a(1 To 15) As Integer
Dim i, j As Integer
Const n=10
Private Sub Form_Load()
Private Sub Command1_Click()
a(j-1) = a(j+1) ‘(2)
Next j
a(i) = key

实现上述功能的VB程序代码如下,但是有两个地方有误,请改正。
Dim a(1 To 15) As Integer
Dim i, j As Integer
Const n=10
Private Sub Form_Load()
Randomize '随机生成n个1到100之间的正整数
For i = 1 To n
a(i) = Int(Rnd * 100) + 1
Next i
'将10个数从小到大排序
For i = 1 To n-1
k = i
For j = i + 1 To n
If a(k) < a(j) Then k = j ‘(1)
Next j
If i <> k Then
t = a(i): a(i) = a(k): a(k) = tEnd If
Next i
'将排好序的数输出在列表框Listl中
List1.Clear
For i = 1 To n
List1.AddItem Str(a(i))
Next i
End SubPrivate Sub Command1_Click()
Dim key As Integer
key = Val(Text1.Text)
i = 1
Do While key > a(i) And (i <= n)
i = i + 1
Loop
Label4.Caption = "该数插入的位置是:" + Str(i)
If i = 11 Then
a(i) = keyElse
For j = n+1 To i + 1 Step -1a(j-1) = a(j+1) ‘(2)
Next j
a(i) = key
End If
List2.Clear
For i = 1 To 11
List2.AddItem a(i)
Next i
End Sub某 VB 程序代码如下:
For i = 1 To 3
For j = 5 To i Step -1
If a(j) < a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
List1.AddItem Str(a(i)) Next i
数组元素 a(1)到 a(6)的数据依次为“1,5,7,6,9,3”,经过该程序段加工后,列表框 list1 中显示的内容是( )
For i = 1 To 3
For j = 5 To i Step -1
If a(j) < a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
List1.AddItem Str(a(i)) Next i
数组元素 a(1)到 a(6)的数据依次为“1,5,7,6,9,3”,经过该程序段加工后,列表框 list1 中显示的内容是( )
A.9 7 6 | B.1 3 5 | C.9 7 6 1 5 3 | D.9 7 6 5 3 1 |
小王用 VB 编写一个自动统计离散数据的“极大值”(如图 a 所示)个数的程序。 功能如下:在列表框 List1 中随机产生 n 个介于[1,99]的正整数,单击“统计极大值”命令按钮 Command1,程序自动统计出极大值,并将其输出到列表框 List2,且将其中的最大值输出在标签 Label1 中。程序界面如图 b 所示,实现上述功能的 VB 程序如下。(假设:数据的左右两个端点不 计入极大值,且相等的两个值也不计入极大值)。请回答以下问题:

图 a 图 b
(1)当 n=6,原始数据为“8 39 24 5 71 25”,此时极大值有: 。
(2)请在划线处填入合适的代码。 Const n = 10
Dim a(1 To n) As Integer '存储原始数据 Dim Max(1 To n) As Integer '存储极大值数据
Private Sub Form_Load() '原始数据初始化
Randomize
For i = 1 To n
a(i) = ① '产生[1,99]间随机整数
List1.AddItem Str(a(i))
Next i End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim count As Integer, Maxa As Integer
count = 0
List2.Clear
For i = 2 To n - 1 '统计极大值,左右两边端点值除外
If ② Then
count = count + 1
③ = a(i)
End If
Next i
Maxa = 0
For i = 1 To count
List2.AddItem Str(Max(i))
If Maxa < Max(i) Then
Maxa = Max(i)
End If
Next i
Label1.Caption = "极大值中的最大值为:" + Str(Maxa) End Sub

图 a 图 b
(1)当 n=6,原始数据为“8 39 24 5 71 25”,此时极大值有: 。
(2)请在划线处填入合适的代码。 Const n = 10
Dim a(1 To n) As Integer '存储原始数据 Dim Max(1 To n) As Integer '存储极大值数据
Private Sub Form_Load() '原始数据初始化
Randomize
For i = 1 To n
a(i) = ① '产生[1,99]间随机整数
List1.AddItem Str(a(i))
Next i End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim count As Integer, Maxa As Integer
count = 0
List2.Clear
For i = 2 To n - 1 '统计极大值,左右两边端点值除外
If ② Then
count = count + 1
③ = a(i)
End If
Next i
Maxa = 0
For i = 1 To count
List2.AddItem Str(Max(i))
If Maxa < Max(i) Then
Maxa = Max(i)
End If
Next i
Label1.Caption = "极大值中的最大值为:" + Str(Maxa) End Sub
若一个正整数从左向右读与从右向左读都一样,我们就将其称之为回文数。如 11、121 均是回文数。请你编写程序,输出 10 至 n 之间的所有回文数。程序运行界面如图所示, 在文本框 Text1 中输入一个正整数 n,单击“查找”按钮 Command1,在列表框 List1 中显示 10 – n 之间的所有回文数,并且在标签 Label1 中输出查找到回文数的总数。

问题:实现上述功能的 VB 代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim n as long , sum as long , i As Long Dim x as long , y as long
List1.Clear
n = Val(Text1.Text) sum = 0
For i = 10 To n
x = n ’(1)
y = 0
Do While x > 0
y = x Mod 10 ’(2)
x = x \ 10
Loop
If y = i Then
List1.additem Str(i)
sum = sum+1
End if Next i
Label1.caption = “共有”& Str(sum) & “个回文数” End Sub

问题:实现上述功能的 VB 代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim n as long , sum as long , i As Long Dim x as long , y as long
List1.Clear
n = Val(Text1.Text) sum = 0
For i = 10 To n

y = 0
Do While x > 0

x = x \ 10
Loop
If y = i Then
List1.additem Str(i)
sum = sum+1
End if Next i
Label1.caption = “共有”& Str(sum) & “个回文数” End Sub
小孟为提高效率,对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:
p = 1: q = 10
Do While p < q
iMin = p: iMax = p
For i = p + 1 To q
If a(i) < a(iMin) Then
iMin = i
elseIf a(i) > a(iMax) Then
iMax = i
endif
Next i
t = a(iMax): a(iMax) = a(q): a(q) = t
①
t = a(iMin): a(iMin) = a(p): a(p) = t
p = p + 1:q = q -1
Loop
要使程序实现上述算法思想,则方框中的语句是
p = 1: q = 10
Do While p < q
iMin = p: iMax = p
For i = p + 1 To q
If a(i) < a(iMin) Then
iMin = i
elseIf a(i) > a(iMax) Then
iMax = i
endif
Next i
t = a(iMax): a(iMax) = a(q): a(q) = t
①
t = a(iMin): a(iMin) = a(p): a(p) = t
p = p + 1:q = q -1
Loop
要使程序实现上述算法思想,则方框中的语句是
A.If iMax = q Then iMax = iMin | B.If iMin = q Then iMin = iMax |
C.If iMax = q Then iMin = iMax | D.If iMin = q Then iMax = iMin |
如下VB程序段:
Dim a(1 To 8) As Integer
a(1) = 13: a(2) = 18: a(3) = 9: a(4) = 32
a(5) = 12: a(6) = 11: a(7) = 7: a(8) = 20
start = 1: k = 1
For i = start + 1 To 8
If a(i) < a(start) Then
k = k + 1
t = a(i): a(i) = a(k): a(k) = t
End If
Next i
t = a(start): a(start) = a(k): a(k) = t
For i = k + 1 To 8
List1.AddItem Str(a(i))
Next i
执行上面代码段后,列表框List1中依次输出的数组元素值为
Dim a(1 To 8) As Integer
a(1) = 13: a(2) = 18: a(3) = 9: a(4) = 32
a(5) = 12: a(6) = 11: a(7) = 7: a(8) = 20
start = 1: k = 1
For i = start + 1 To 8
If a(i) < a(start) Then
k = k + 1
t = a(i): a(i) = a(k): a(k) = t
End If
Next i
t = a(start): a(start) = a(k): a(k) = t
For i = k + 1 To 8
List1.AddItem Str(a(i))
Next i
执行上面代码段后,列表框List1中依次输出的数组元素值为
A.322018 | B.32122018 |
C.203218 | D.321820 |
(加试题)某对分查找算法的VB程序段如下:
i = 1: j = 8: c = 0
Do While i <= j
c = c + 1
m = Fix((i + j) / 2)
If key = b(m) Then Exit Do 'Exit Do表示退出循环
If key < b(m) Then j = m - 1 Else i = m + 1
Loop
数组元素b(1)到b(8)的值依次为 “22,32,39,48,71,82,96,106”。若该程序段运行结束后,c的值为2,则key的值是
i = 1: j = 8: c = 0
Do While i <= j
c = c + 1
m = Fix((i + j) / 2)
If key = b(m) Then Exit Do 'Exit Do表示退出循环
If key < b(m) Then j = m - 1 Else i = m + 1
Loop
数组元素b(1)到b(8)的值依次为 “22,32,39,48,71,82,96,106”。若该程序段运行结束后,c的值为2,则key的值是
A.48或32 | B.48或96 | C.32或82 | D.82或96 |