- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- + 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
有如下VB程序段:
n = 0
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
If c >= "0" And c <= "9" Then m = 1 Else m = 2
a(m) = a(m) + 1
If a(m) = 1 Then n = n + 1
Next i
数组a各元素的初始值都为0,文本框Textl的内容为“Luck2018”。执行程序后,变量n的值为_____________
n = 0
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
If c >= "0" And c <= "9" Then m = 1 Else m = 2
a(m) = a(m) + 1
If a(m) = 1 Then n = n + 1
Next i
数组a各元素的初始值都为0,文本框Textl的内容为“Luck2018”。执行程序后,变量n的值为_____________
(加试题)有如下VB程序段:
Private Sub Command1_Click()
Dim a(0 To 9) As Integer
Dim t as Long
t = Val(Text1.Text)
Do While t <> 0
a(t Mod 10) = a(t Mod 10) + 1
t = t \ 10
Loop
For i = 0 To 9
If a(i) <> 0 Then x = x + a(i)
Next i
End Sub
若在文本框 Text1 中输入 3141592,则程序执行后,变量 x 的值为( )
Private Sub Command1_Click()
Dim a(0 To 9) As Integer
Dim t as Long
t = Val(Text1.Text)
Do While t <> 0
a(t Mod 10) = a(t Mod 10) + 1
t = t \ 10
Loop
For i = 0 To 9
If a(i) <> 0 Then x = x + a(i)
Next i
End Sub
若在文本框 Text1 中输入 3141592,则程序执行后,变量 x 的值为( )
A.1 | B.2 | C.5 | D.7 |
编写VB程序,实现如下功能:单击启动按钮Start1,在列表框List1内每隔2秒输出一个由10个大小写字母组合成的字符串,运行界面如图所示:

(注:字母“A”的ASCII码值为65,字母“a” 的ASCII码值为97)
(1)按观察程序代码,可知“启动”按钮的对象名为_________ 。(单选,填字母
(2)实现上述功能的 VB 程序如下,请在划线处填入合适代码。
Private Sub Start_1_Click()
Timer1.Enabled = ①
End Sub
Private Sub Timer1_Timer()
Dim s As String, c As String
Dim i As Integer, e As Integer, h As Integer
Randomize
s = ""
flag = True
For i = 1 To 10
e = Int(Rnd * 52 + 1)
If e <= 26 Then
h = e + 64
Else
②
End If
③
s = s + c
Next i
List1.AddItem s
End Sub
划线处的代码为:
①_______________________________
②________________________________
③________________________________

(注:字母“A”的ASCII码值为65,字母“a” 的ASCII码值为97)
(1)按观察程序代码,可知“启动”按钮的对象名为_________ 。(单选,填字母
A.Timer1 / | B.Start / | C.Command1 / | D.Start_1 / | E.启动) |
Private Sub Start_1_Click()
Timer1.Enabled = ①
End Sub
Private Sub Timer1_Timer()
Dim s As String, c As String
Dim i As Integer, e As Integer, h As Integer
Randomize
s = ""
flag = True
For i = 1 To 10
e = Int(Rnd * 52 + 1)
If e <= 26 Then
h = e + 64
Else
②
End If
③
s = s + c
Next i
List1.AddItem s
End Sub
划线处的代码为:
①_______________________________
②________________________________
③________________________________
在大小写英文字母组成的字符串中,当相邻两个字母的大小写不一致时,我们称为一次大小写变换。现编写“大小写字母变换次数统计”程序,实现如下功能:在文本框Text1中输入英文字母构成的字符串,单击“统计”按钮Command1,程序统计该字符串的大小写变换次数,并将结果显示在标签Label1中。程序运行界面如下图所示。

(1)设计程序界面时,要清空文本框Text1中的显示内容,应修改文本框的________属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim s As String, ch As String, i As Integer, res As Integer
Dim f1 As Boolean 'f1表示前一个字母的大小写状态
Dim f2 As Boolean 'f2表示当前字母的大小写状态
s =①_________
res = 0: ch = Mid(s, 1, 1)
f1 = ch >= "A" And ch <= "Z"
For i = 2 To Len(s)
ch = Mid(s, i, 1)
f2 = ch >= "A" And ch <= "Z"
If ②________ Then res = res + 1
f1 = f2
Next i
Label2.Caption = "大小写变换次数为" & ③_______ & "次"
End Sub
(3)运行程序,在文本框Text1中输入“AmericanRAILWAY”,单击“统计”按钮,则显示的大小写变换次数是_______次。
如图 1 所示,这是一个城市街道简图,小明从 A 点出发,到达 B 点,如果在每一个路口只能向右或向上走(0 表示向上走,1 表示向右走),问小明有多少条行走路线,并请输出每条路线。程序界面如图 2 所示

算法分析:从 A 点到 B 点共有 7 个路口,即可以有一个 7 位二进制数表示所走路线。观察以上路线,枚举所有满足路线特征的 7 位二进制数,再去掉不满足的二进制数即可。
(1)图 1 所示路线对应的十进制数为_____。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim b As String, t As Integer, i As Integer, c As Integer, d As Integer
t = 0 '可走路线计数
For i = 15 To 120 '所有可走路线用十进制枚举
d = i
c = 0
b = ""
Do While d <> 0
If d Mod 2 = 1 Then
b = "1" + b
c = c + 1
If c > 4 Then Exit Do '若"1"的总数超过 4 个表示路线错误,需退出 Do 循环 Else
①_____________ End If
②____________ Loop
If c = 4 And Len(b) = 7 Then
t = t + 1
List1.AddItem b
End If
Next i
Label1.Caption = Str(t) + " 条"
End Sub

算法分析:从 A 点到 B 点共有 7 个路口,即可以有一个 7 位二进制数表示所走路线。观察以上路线,枚举所有满足路线特征的 7 位二进制数,再去掉不满足的二进制数即可。
(1)图 1 所示路线对应的十进制数为_____。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim b As String, t As Integer, i As Integer, c As Integer, d As Integer
t = 0 '可走路线计数
For i = 15 To 120 '所有可走路线用十进制枚举
d = i
c = 0
b = ""
Do While d <> 0
If d Mod 2 = 1 Then
b = "1" + b
c = c + 1
If c > 4 Then Exit Do '若"1"的总数超过 4 个表示路线错误,需退出 Do 循环 Else
①_____________ End If
②____________ Loop
If c = 4 And Len(b) = 7 Then
t = t + 1
List1.AddItem b
End If
Next i
Label1.Caption = Str(t) + " 条"
End Sub
小吴编写了一个 VB 程序,实现功能如下:在 1000 至 9999 的自然数中,找出能被 7 整除,且百位或者个位数字是 6 的所有整数,并统计个数。程序界面如下:

(1)在设计程序界面时,要使按钮 Command1 上显示为统计,可在属性窗口通过修改其 ________ 属性完成。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As Integer, n As Integer
Dim a As Integer, b As Integer n = 0
List1.Clear
For s =1001 To 9999 Step 7
a = ①________
b= s Mod 10
If ②______Then
List1.AddItem Str(s)
③_________
End If
Next s
Label1.Caption = "共有" + Str(n) + "个"
End Sub

(1)在设计程序界面时,要使按钮 Command1 上显示为统计,可在属性窗口通过修改其 ________ 属性完成。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As Integer, n As Integer
Dim a As Integer, b As Integer n = 0
List1.Clear
For s =1001 To 9999 Step 7
a = ①________
b= s Mod 10
If ②______Then
List1.AddItem Str(s)
③_________
End If
Next s
Label1.Caption = "共有" + Str(n) + "个"
End Sub
(加试题)有如下程序段:
If a(j) <= a(i) And d(j) >= d(i) Then
d(i) =d(j)+1 : pre(i) = j
End If
Next j
k=pre(k)
For i = 2 To 6
For j = 1 To i - 1If a(j) <= a(i) And d(j) >= d(i) Then
d(i) =d(j)+1 : pre(i) = j
End If
Next j
Next i
max = 0 : k = 0
For i = 1 To 6
If d(i)>max Then max = d(i) : k = iNext i
Do While k <> 0
st = a(k) & ","& stk=pre(k)
Loop
Text1.Text = Mid(st, 1, Len(st) - 1)
数组元素a(1)到a(6)的值依次为“2,6,5,9,8,8”,数组d各元素的值初始化为1,数组pre各元素的值初始化为0,经过该程序段“加工”后,Text1中的值是( )A.2,5,9 | B.2,6,8,8 | C.2,5,8,8 | D.2,5,6,8,8,9 |
统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾, 程序运行界面如图所示。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim a(1 To 100) As String ,s As String, ch As String, word As String
Dim i As Integer, j As Integer, k As Integer, numb As Integer
s = Text1.Text : k = 0 : word = ""
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "a" And ch <= "z" Or ch >= "A" And ch <= "Z" Then
If ch >= "A" And ch <= "Z" Then ①【小题2】
word = word + ch
Else
flag = False
For j = 1 To k
If a(j) = word Then flag = True
Next j
If Not flag And word <> "" Then
②【小题3】
a(k) = word
numb = numb + 1
End If
③【小题4】
End If
Next i
Text2.Text = str(numb)
End Sub
A.对象名 / | B.事件名 / | C.事件处理过程名) |
Private Sub Command1_Click()
Dim a(1 To 100) As String ,s As String, ch As String, word As String
Dim i As Integer, j As Integer, k As Integer, numb As Integer
s = Text1.Text : k = 0 : word = ""
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "a" And ch <= "z" Or ch >= "A" And ch <= "Z" Then
If ch >= "A" And ch <= "Z" Then ①【小题2】
word = word + ch
Else
flag = False
For j = 1 To k
If a(j) = word Then flag = True
Next j
If Not flag And word <> "" Then
②【小题3】
a(k) = word
numb = numb + 1
End If
③【小题4】
End If
Next i
Text2.Text = str(numb)
End Sub
小胡收集了2018届高三学生高考成绩及相关的选科情况,存入数据库中,部分界面截图如图所示:
(1)请在划线处填入合适的代码。
Dim xh(1 To 1000) As Integer ’数据库中读取时第i为学生的学号存储在xh(i)
Dim zf(1 To 1000) As Integer ’学号为i的考生的总分存储在zf(i)
Dim xk(1 To 1000) As String ’学号为i的考生的选考课程信息存储在zf(i)
’ 数据格式 **-**-** (如:物理-化学-生物)
Dim jspm(1 To 1000) As Integer ’学号为i的技术选考生的总分在所有技术考生中的
’排名存储在数组jspm(i)
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim constr as string , sql as string
Constr = "Provider=Microsoft.ace.OLEDB.12.0;"
Constr = constr & "Data Source=" & App.Path + "\data\stu2018.accdb"
conn.ConnectionString = constr
conn.open( )
rs.Open "select * from 2018cj " , conn
i=0
Do While Not rs.EOF
i=i+1
xh(i)=rs(“xuehao”)
zf(rs(“xuehao”)) = rs(“fenshu”)
xk(rs(“xuehao”))=rs(“xkinfo”)
①【小题1】
Loop
N=i
End Sub
’判断选科信息info中是否包含科目km
Function YouKM(ByVal km As String, ByVal Info As String) As Boolean
Dim km1 As String
YouKM = False
For i = 1 To 3
If ②【小题2】 Then
YouKM = True
Exit For
End If
Next i
End Function
'为技术学科考试求名次
Private Sub Command1_Click()
For i = 1 To n
If ③【小题3】 Then
k = k + 1
jsinfo(2 * k - 1) = xh(i)
jsinfo(2 * k) = cj(xh(i))
End If
Next i
'学号为i的学生在技术选考生中的排名,存入jspm(i)中
For i = 1 To k
mc = 0
For j = 1 To k
If jsinfo (2 * j) > jsinfo (2 * i) Then mc = mc + 1
Next j
jspm(jsinfo(2*i-1))= ④【小题4】
End Sub
程序功能如下:
在窗体加载时,从数据库中读取学生总数N;读取N名学生的信息存储在相关数组中。N名学生的学号依次存储在数组xh(1)~xh(n) 中;学号为i的学生的总成绩存储在数组 zf(i)中,课程选修信息存储在xk(i)中;
点击“统计”按钮后,程序筛选出所有技术考生的相关信息,并计算该学生在所有技术考生中的排名(总分相同的,排名也相同)。
实现上述功能的VB程序如下,请回答下列问题:(1)请在划线处填入合适的代码。
Dim xh(1 To 1000) As Integer ’数据库中读取时第i为学生的学号存储在xh(i)
Dim zf(1 To 1000) As Integer ’学号为i的考生的总分存储在zf(i)
Dim xk(1 To 1000) As String ’学号为i的考生的选考课程信息存储在zf(i)
’ 数据格式 **-**-** (如:物理-化学-生物)
Dim jspm(1 To 1000) As Integer ’学号为i的技术选考生的总分在所有技术考生中的
’排名存储在数组jspm(i)
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim constr as string , sql as string
Constr = "Provider=Microsoft.ace.OLEDB.12.0;"
Constr = constr & "Data Source=" & App.Path + "\data\stu2018.accdb"
conn.ConnectionString = constr
conn.open( )
rs.Open "select * from 2018cj " , conn
i=0
Do While Not rs.EOF
i=i+1
xh(i)=rs(“xuehao”)
zf(rs(“xuehao”)) = rs(“fenshu”)
xk(rs(“xuehao”))=rs(“xkinfo”)
①【小题1】
Loop
N=i
End Sub
’判断选科信息info中是否包含科目km
Function YouKM(ByVal km As String, ByVal Info As String) As Boolean
Dim km1 As String
YouKM = False
For i = 1 To 3
If ②【小题2】 Then
YouKM = True
Exit For
End If
Next i
End Function
'为技术学科考试求名次
Private Sub Command1_Click()
Dim jsinfo(1 To 1000) As Integer ’依次存储每个技术选考生的学号和成绩
Dim k as integer ’存储找到的技术选考学生的数量
'将所有选考“技术”的考生学号、成绩依次存入数组jsinfo中
k = 0For i = 1 To n
If ③【小题3】 Then
k = k + 1
jsinfo(2 * k - 1) = xh(i)
jsinfo(2 * k) = cj(xh(i))
End If
Next i
'学号为i的学生在技术选考生中的排名,存入jspm(i)中
For i = 1 To k
mc = 0
For j = 1 To k
If jsinfo (2 * j) > jsinfo (2 * i) Then mc = mc + 1
Next j
jspm(jsinfo(2*i-1))= ④【小题4】
Next i
'输出所有技术考试的学号、成绩、技术排名信息 代码略End Sub
某地区公共自行车收费信息如下:“60分钟内免费;60分钟以上至120分钟(含),收费1元;120分钟以上至180分钟(含),收费2元;租用超过180分钟(含)以上的时间,按每小时3元计费(不足一小时的按一小时计)”。现按要求编写VB程序,界面如图图所示,程序功能如下:在文本框Text1中输入租车时间,单击“计费”按钮Command1,在标签Label5中输出对应的租车费用。
(1)在应用程序界面设计时,为添加“计费”按钮,应使用第2图所示的“控件工具箱”中的___(请填写相应编号),并在3图所示的“属性窗口”中,将____属性值设置为“计费”。



1图 2图 3图
(2)请根据题意将下列程序补充完整。
Private Sub Command1_Click()
Dim zysj As Single, zyfy As Single ‘zysj:租用时间,zyfy:租用费用
zysj = Val(Text1.Text)
If zysj <= 60 Then
zyfy = 0
ElseIf zysj <= 120 Then
zyfy = 1
ElseIf zysj <= 180 Then
_____________________
ElseIf zysj Mod 60 = 0 Then
zyfy = (zysj - 180) / 60 * 3 + 3
Else
zyfy = (Int((zysj - 180) / 60) + 1) * 3 + 3
End If
Label5.Caption = Str(zyfy)
End Sub
(1)在应用程序界面设计时,为添加“计费”按钮,应使用第2图所示的“控件工具箱”中的___(请填写相应编号),并在3图所示的“属性窗口”中,将____属性值设置为“计费”。



1图 2图 3图
(2)请根据题意将下列程序补充完整。
Private Sub Command1_Click()
Dim zysj As Single, zyfy As Single ‘zysj:租用时间,zyfy:租用费用
zysj = Val(Text1.Text)
If zysj <= 60 Then
zyfy = 0
ElseIf zysj <= 120 Then
zyfy = 1
ElseIf zysj <= 180 Then
_____________________
ElseIf zysj Mod 60 = 0 Then
zyfy = (zysj - 180) / 60 * 3 + 3
Else
zyfy = (Int((zysj - 180) / 60) + 1) * 3 + 3
End If
Label5.Caption = Str(zyfy)
End Sub