- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 程序设计语言
- 循环结构
- 分支结构
- 顺序结构
- 类、对象、属性、方法、事件和事件处理的概念
- VB应用程序的界面设计与调试
- 基本数据类型
- 常量、变量、数组
- 常用的标准函数
- 基本运算及表达式
- 赋值语句
- 选择语句
- + 循环语句
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
某同学设计了一个排序算法,先将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理,直至所有元素按降序排列。算法的VB程序段如下:
‘待排序数据已存储在数组a中(a(1)~a(n))

上述程序段中3处方框处的代码分别为
‘待排序数据已存储在数组a中(a(1)~a(n))

上述程序段中3处方框处的代码分别为
A.①i+1 To n Step 2 ②2 To n Step 2 ③a(j+1)=t |
B.①i+2 To n Step 2 ②3 To n Step 2 ③a(j+1)=t |
C.①i+2 To n Step 2 ②2 To n Step 2 ③a(j)=t |
D.①i+1 To n Step 2 ②3 To n Step 2 ③a(j)=t |
数组 a 存储降序排列的 m 个数据,数组 b 中存储的是升序排列的 n 个数据,且两个数组中存储的数据为区间[1,20]范围内的不重复的随机整数。现将两个数组的数据合并到 c 数组中,使 c 数组的数据为左右交替上升,如下表所示:

当窗体 Form1 加载时,自动产生 a、b 数组的数据,并分别显示在列表框 List1 与 List2
中,单击合并按钮 Command1 后,在 c 数组中保存按规则合并后的 a、b 数组的数据,并显示在列表框 List3 中。程序截图如下所示:

实现该功能的 VB 程序如下:
Const m = 5
Const n = 6
Dim a(1 To m) As Integer
Dim b(1 To n) As Integer
Dim c(1 To m + n) As Integer
‘窗体加载时,生成数组 a、b 中的数据,并按要求排序后显示在列表框中,代码略
Private Sub Command1_Click()
Dim pa As Integer, pb As Integer, pc As Integer, s As Integer, flag As Boolean
pa = m: pb = 1: pc = 1
flag = True
Do While ____________________
If a(pa) < b(pb) Then
c(pc) = s
If flag Then
__________________________
Loop
‘处理 a、b 数组中剩余数据,并在列表框 List3 中输出数组 c,代码略
End Sub
(1)窗体加载的事件处理过程名为__________。(填字母:
(2)加框处代码有错,请改正。 __________
(3)在划线处填入合适的代码。

当窗体 Form1 加载时,自动产生 a、b 数组的数据,并分别显示在列表框 List1 与 List2
中,单击合并按钮 Command1 后,在 c 数组中保存按规则合并后的 a、b 数组的数据,并显示在列表框 List3 中。程序截图如下所示:

实现该功能的 VB 程序如下:
Const m = 5
Const n = 6
Dim a(1 To m) As Integer
Dim b(1 To n) As Integer
Dim c(1 To m + n) As Integer
‘窗体加载时,生成数组 a、b 中的数据,并按要求排序后显示在列表框中,代码略
Private Sub Command1_Click()
Dim pa As Integer, pb As Integer, pc As Integer, s As Integer, flag As Boolean
pa = m: pb = 1: pc = 1
flag = True
Do While ____________________
If a(pa) < b(pb) Then
s = a(pa)
pa = pa - 1
Elses = b(pb)
pb = pb + 1
End Ifc(pc) = s
If flag Then
pc = m + n - pc + 1
Elsepc =
__________________________
Loop
‘处理 a、b 数组中剩余数据,并在列表框 List3 中输出数组 c,代码略
End Sub
(1)窗体加载的事件处理过程名为__________。(填字母:
A.Form1_Click / | B.Form_Click / |
C.Form1_Load / | D.Form_load) |
(3)在划线处填入合适的代码。
小蓝设计了一个数字字符串的简单加密解密小程序,该程序的加密规则是计算连续升序子串的长度,将该长度字符插入到相应子串后面。例如:

输入2350123456783,先将字符串拆成三段,分别是235,012345678,3要求每一段必须严格有序,如果无法实现连续升序,则单独作为一个拆分。
在文本框Text1中输入原文,单击“加密”按钮,可在文本框Text2中输出密文。
在文本框Text2中输入密文,单击“解密”按钮,可在文本框Text3中输出原文。
(1)程序运行时,在文本框Text2中输入“1233012345678910”,则在Text3中显示的内容为__________________ 。
(2)实现上述功能的VB代码段如下,请在划线处填上合适代码。
Private Sub Command1_Click()'加密过程
Dim a(1 To 100) As String
Dim s1, s2 As String: Dim tmp As Integer
tmp = 1: s1 = Text1.Text
For i = 1 To Len(s1)
a(i) = Mid(s1, i, 1)
Next i
s2 = a(1)
For i = 2 To Len(s1)
If _________________ Then
Next i
s2 = s2 + LTrim(Str(tmp)) : Text2.Text = s2
End Sub
Private Sub Command2_Click()'解密过程
Dim b(0 To 100) As String
Dim k As String, t As Integer, n As Integer
Dim s As String, s3 As String, j As Integer
s = Text2.Text: n = Len(s)
For i = 1 To n
b(i) = Mid(s, i, 1)
Next i
t = n - 1: k = Val(b(n))
Do While t > 0
If k <> 0 Then
t = t - 1
Loop
Text3.Text = s3
End Sub

输入2350123456783,先将字符串拆成三段,分别是235,012345678,3要求每一段必须严格有序,如果无法实现连续升序,则单独作为一个拆分。
原字符串 | 235 | 012345678 | 3 | |||
连续升序字符数 | 3 | 9 | 1 | |||
密文 | 235 | 3 | 012345678 | 9 | 3 | 1 |
在文本框Text1中输入原文,单击“加密”按钮,可在文本框Text2中输出密文。
在文本框Text2中输入密文,单击“解密”按钮,可在文本框Text3中输出原文。
(1)程序运行时,在文本框Text2中输入“1233012345678910”,则在Text3中显示的内容为__________________ 。
(2)实现上述功能的VB代码段如下,请在划线处填上合适代码。
Private Sub Command1_Click()'加密过程
Dim a(1 To 100) As String
Dim s1, s2 As String: Dim tmp As Integer
tmp = 1: s1 = Text1.Text
For i = 1 To Len(s1)
a(i) = Mid(s1, i, 1)
Next i
s2 = a(1)
For i = 2 To Len(s1)
If _________________ Then
s2 = s2 + a(i): tmp = tmp + 1
Elses2 = s2 + LTrim(Str(tmp)) 'LTrim()函数用以移除左边的符号位空字符
s2 = s2 + a(i)
_________________
End IfNext i
s2 = s2 + LTrim(Str(tmp)) : Text2.Text = s2
End Sub
Private Sub Command2_Click()'解密过程
Dim b(0 To 100) As String
Dim k As String, t As Integer, n As Integer
Dim s As String, s3 As String, j As Integer
s = Text2.Text: n = Len(s)
For i = 1 To n
b(i) = Mid(s, i, 1)
Next i
t = n - 1: k = Val(b(n))
Do While t > 0
If k <> 0 Then
For j = 1 To k
__________________t = t - 1
Next j
k = Val(b(t))
t = t - 1
Elsek = 10
t = t - 1
End IfLoop
Text3.Text = s3
End Sub
数塔问题。一组数字构成如图a所示的数塔,从数塔顶层出发,每个结点可以选择移动至左下方或右下方结点,一直走到塔底为1条路径。求从数塔顶层到塔底各条路径上数字和的最大值。
解决此问题可采用自底至顶分析的方法。如图a所示的数塔中,先从第3层开始分析:如果路径经过第3层的第1个数字12,那么从12到尾结点的路径上数字之和的最大值是当前结点值加上该结点左下方、右下方结点中的较大值,记作f(3,1)=12+14:同理,f(3,2)=7+15,f(3,3)=26+15;再分析第2层,计算f(2,1)、f(2,2);最后计算出第一层f(1,1),即为所求结果。
(1)如图a所示数塔各条路径上的数字和的最大值为___________。

(2)编写VB程序,运行界面如图b所示,程序代码如下,请在划线处填入合适的代码,将程序补充完整。
Const n =5
Dim a(1 To n^2) As Integer ’ 数组a存储数塔数据,存储结构如图c所示
Dim f(1 To n^2) As Integer ’ 数组f存储从第i层第J个数到底层尾结点的最大数字之和,其存储结构与数组a一样
Private Sub Command l_Click()
’生成数塔,将数据存入a数组中,代码略

①___________________________________
②__________________________________
③__________________________________
解决此问题可采用自底至顶分析的方法。如图a所示的数塔中,先从第3层开始分析:如果路径经过第3层的第1个数字12,那么从12到尾结点的路径上数字之和的最大值是当前结点值加上该结点左下方、右下方结点中的较大值,记作f(3,1)=12+14:同理,f(3,2)=7+15,f(3,3)=26+15;再分析第2层,计算f(2,1)、f(2,2);最后计算出第一层f(1,1),即为所求结果。
(1)如图a所示数塔各条路径上的数字和的最大值为___________。

(2)编写VB程序,运行界面如图b所示,程序代码如下,请在划线处填入合适的代码,将程序补充完整。
Const n =5
Dim a(1 To n^2) As Integer ’ 数组a存储数塔数据,存储结构如图c所示
Dim f(1 To n^2) As Integer ’ 数组f存储从第i层第J个数到底层尾结点的最大数字之和,其存储结构与数组a一样
Private Sub Command l_Click()
’生成数塔,将数据存入a数组中,代码略

①___________________________________
②__________________________________
③__________________________________
某班师生玩一个游戏,n(n 不超过 1000)个同学站成一圈,逆时针编号为 l - n,有两个老师 A 和 B,A 老师从 1 开始逆时针数 k 个同学,B 老师从 n 开始顺时针数 m 个同学(注意 A,B 老师可能数到同一个学生),被老师选中的 1 个或 2 个学生离开圈子,剩下的学生继续。
程序开始时在 Text1 中输入同学数 n,在 Text2 中输入 k 的值,在 Text3 中输入 m 的值,点击“开始” 按钮,在 label5 中显示依次出圈的学生编号。程序运行如图所示:

VB 程序如下,请将按要求答题:
Dim stu(1 To 1000) As Integer
Dim n As Integer
Private Sub Command1_Click()
stup1 = n: stup2 = 1
For i = 1 To n
stu(i) = i Next i
Do While left > 0
stup1 = teachount(stup1, 1, k)
stup2 =
Label5.Caption = Label5.Caption & " " & Str(stup1)
left = left - 1
If ② Then
Label5.Caption = Label5.Caption & " " & Str(stup2)
left = left - 1
End If stu(stup1) = 0
'f=1 表示逆时针数 c 个,f=-1 表示顺时针数 c 个
Function teachount(ByVal p As Integer, ByVal f As Integer, ByVal c As Integer) As Integer
Do While c > 0
③
Do While stu(p) = 0
End Function
(1)加框处的语句有错误,请改正:______________________________________________
(2)请将①处的语句补充完整:______________________________________________
(3)请将②处的语句补充完整:______________________________________________
(4)请将③处的语句补充完整:______________________________________________
程序开始时在 Text1 中输入同学数 n,在 Text2 中输入 k 的值,在 Text3 中输入 m 的值,点击“开始” 按钮,在 label5 中显示依次出圈的学生编号。程序运行如图所示:

VB 程序如下,请将按要求答题:
Dim stu(1 To 1000) As Integer
Dim n As Integer
Private Sub Command1_Click()
Dim left, k, m As Integer
Dim stup1, stup2 As Integer
n = Val(Text1.Text)
k = Val(Text2.Text)
m = Val(Text3.Text)
①stup1 = n: stup2 = 1
For i = 1 To n
stu(i) = i Next i
Do While left > 0
stup1 = teachount(stup1, 1, k)
stup2 =

Label5.Caption = Label5.Caption & " " & Str(stup1)
left = left - 1
If ② Then
Label5.Caption = Label5.Caption & " " & Str(stup2)
left = left - 1
End If stu(stup1) = 0
stu(stup2) = 0
Loop
End Sub'f=1 表示逆时针数 c 个,f=-1 表示顺时针数 c 个
Function teachount(ByVal p As Integer, ByVal f As Integer, ByVal c As Integer) As Integer
Do While c > 0
③
Do While stu(p) = 0
p = (p + f + n - 1) Mod n + 1
Loopc = c - 1
Loop teachount = pEnd Function
(1)加框处的语句有错误,请改正:______________________________________________
(2)请将①处的语句补充完整:______________________________________________
(3)请将②处的语句补充完整:______________________________________________
(4)请将③处的语句补充完整:______________________________________________
某对分查找算法的 VB 程序段如下:
i=1:j=8:s=""
key=Text1.Text
Do While i<=j
m=(i+j)\2
If key=a(m) Then
s=s+"M"
Exit Do
Elseif Key >a(m) Then
j=m-1:s=s+"L"
Else
i=m+1: s=s+"R" End if
Loop Text1.Text=s
数组元素 a(1)到 a(8)的值依次为“tiger,snake,sheep,rabbit,pig,mouse,monkey,dog”,若该程序段执行后,文本框 Text1 中显示的内容不可能是()
i=1:j=8:s=""
key=Text1.Text
Do While i<=j
m=(i+j)\2
If key=a(m) Then
s=s+"M"
Exit Do
Elseif Key >a(m) Then
j=m-1:s=s+"L"
Else
i=m+1: s=s+"R" End if
Loop Text1.Text=s
数组元素 a(1)到 a(8)的值依次为“tiger,snake,sheep,rabbit,pig,mouse,monkey,dog”,若该程序段执行后,文本框 Text1 中显示的内容不可能是()
A.RLM | B.LR | C.RM | D.LM |
某对分查找算法的 VB 程序段如下:
i= 1 : j= 8 : t= 0 key=Int(Rnd()*7)+14
Do While i<=j
m=Int((i+j)/2)
t=t+1
if a(m)=key Then Exit Do
else
If a(m)>key Then j=m-1
Else
Loop
数组元素 a(1)到 a(8)的值依次为“2,11,14,15,18,19,20,22”,该程序段运行结束后,变量 t 的最大值可能是()
i= 1 : j= 8 : t= 0 key=Int(Rnd()*7)+14
Do While i<=j
m=Int((i+j)/2)
t=t+1
if a(m)=key Then Exit Do
else
If a(m)>key Then j=m-1
Else
i=m+1 End if
End ifLoop
数组元素 a(1)到 a(8)的值依次为“2,11,14,15,18,19,20,22”,该程序段运行结束后,变量 t 的最大值可能是()
A.1 | B.2 | C.3 | D.4 |