- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- + 算法实例的程序实现
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)数组a中存储的是一组正整数,特征是:①以三个数为一组的话,每组中任意一个数都比前面一组中的任意一个数要大;②每组中三个数依次递减;③数组中数的总个数为3的倍数。依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Const n = 15
Dim a(1 To n) As Integer, search As Integer, key As Integer
Dim i As Integer, j As Integer, m As Integer
'读取一组正整数,按上述规则存入数组a中,代码略。
key = Val(Text1.Text)
i = 1: j = n: search = 0
Do While i <= j
m = (i + j) \ 2
If m Mod 3 <> 0 Then m= m -2 '(1) 把m调整到三个一组的最后一个数的位置
If key = a(m) Then
search = m : Exit Do
ElseIf key < a(m) Then
j = m - 3
ElseIf key <= a(m - 2) Then '(2)
i = m + 1
ElseIf key = a(m - 2) Then
search = m - 2 : Exit Do
ElseIf key = a(m - 1) Then
search = m - 1 : Exit Do
Else
search = 0 : Exit Do
End If
Loop
If search <> 0 Then
Text2.Text = Str(search)
Else
Text2.Text = "找不到"
End If
End Sub
加框处代码应修改为:(1)【小题1】 (2)【小题2】
8 | 5 | 3 | 17 | 15 | 10 | 32 | 23 | 18 | 53 | 43 | 37 | 82 | 72 | 63 | …… |
Private Sub Command1_Click()
Const n = 15
Dim a(1 To n) As Integer, search As Integer, key As Integer
Dim i As Integer, j As Integer, m As Integer
'读取一组正整数,按上述规则存入数组a中,代码略。
key = Val(Text1.Text)
i = 1: j = n: search = 0
Do While i <= j
m = (i + j) \ 2
If m Mod 3 <> 0 Then m= m -2 '(1) 把m调整到三个一组的最后一个数的位置
If key = a(m) Then
search = m : Exit Do
ElseIf key < a(m) Then
j = m - 3
ElseIf key <= a(m - 2) Then '(2)
i = m + 1
ElseIf key = a(m - 2) Then
search = m - 2 : Exit Do
ElseIf key = a(m - 1) Then
search = m - 1 : Exit Do
Else
search = 0 : Exit Do
End If
Loop
If search <> 0 Then
Text2.Text = Str(search)
Else
Text2.Text = "找不到"
End If
End Sub
加框处代码应修改为:(1)【小题1】 (2)【小题2】
统计不同单词个数,在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
(加试题)一个简单的四则混合运算式子(算式中只包含整数、+、-、*、/、=)的运算规则是先进行“*”或“/”,再进行“+”或“-”,下列是用 VB编写的简单四则混合运算的程序,运行程序时在文本框 Text1 中输入四则运算式子,单击命令按钮 Command1,在标签Label1 中输出结果。程序界面及代码如下。请回答以下问题。
(1) 若在文本框 Text1 中输入式子“12*5-32/4+20=”,则运行程序后在标签 Label1 中显示的内容是_________。

(2) 请在划线①②③处填入合适的代码,让程序能实现计算功能。
Private Sub Command1Click
Dim a(1 To 100) As Single, b(0 To 100) As String
Dim s As String, c As String
Dim sz As Integer, i As Integer, k As Integer
s = Text1.Text:k = 0
For i = 1 To Len(s)
Do While c >= "0" And c <= "9"
sz= ①________
i = i + 1
c = Mid(s, i, 1)
Loop
k = k + 1: a(k) = sz: b(k) = c
End If
Do While k > 1 And ②________
If b(k - 1) = "+" Then a(k - 1) = a(k - 1) + a(k)
If b(k - 1) = "-" Then a(k - 1) = a(k - 1) - a(k)
If b(k - 1) = "*" Then a(k - 1) = a(k - 1) * a(k)
If b(k - 1) = "/" Then a(k - 1) = a(k - 1) / a(k)
b(k-1) = b(k)
k = k - 1
Loop
Next i
Label1.Caption = "运算的结果是:" + Str(a(1))
End Sub
Function yxj(x As String) As Integer
(1) 若在文本框 Text1 中输入式子“12*5-32/4+20=”,则运行程序后在标签 Label1 中显示的内容是_________。

(2) 请在划线①②③处填入合适的代码,让程序能实现计算功能。
Private Sub Command1Click
Dim a(1 To 100) As Single, b(0 To 100) As String
Dim s As String, c As String
Dim sz As Integer, i As Integer, k As Integer
s = Text1.Text:k = 0
For i = 1 To Len(s)
c = Mid(s, i, 1)
If c >= "0" And c <= "9" Then
sz = 0Do While c >= "0" And c <= "9"
sz= ①________
i = i + 1
c = Mid(s, i, 1)
Loop
k = k + 1: a(k) = sz: b(k) = c
End If
Do While k > 1 And ②________
If b(k - 1) = "+" Then a(k - 1) = a(k - 1) + a(k)
If b(k - 1) = "-" Then a(k - 1) = a(k - 1) - a(k)
If b(k - 1) = "*" Then a(k - 1) = a(k - 1) * a(k)
If b(k - 1) = "/" Then a(k - 1) = a(k - 1) / a(k)
b(k-1) = b(k)
k = k - 1
Loop
Next i
Label1.Caption = "运算的结果是:" + Str(a(1))
End Sub
Function yxj(x As String) As Integer
If x = "*" Or x = "/" Then
yxj = 1ElseIf x = "+" Or x = "-" Then
yxj = 2Else
③________End If
End Function某多选题共有6个候选项(A、B、C、D、E、F),得分规则是:全部答对得2分,部分答对得1分,未作答或有错误答案0分。设计一个能够评分的程序,要求如下:在文本框Text1中输入标准答案,在文本框Text2中输入学生答案。点击评分按钮Command1后,将得分显示在标签Label4中。程序界面如图所示:

(1)要使程序运行后,窗体Form1的标题栏中显示“评分”,正确的做法是_____ (单选,填字母:
(2)实现上述功能的程序如下,请在划线处填入合适的代码:
Private Sub Command1Click
Dim cans As String ,ans As String ,c As String ,count As Integer
Dim f(1 To 6) As Boolean
cans = Text1.Text:ans = Text2.Text
count = 0
For i = 1 To Len(cans)
c = Mid(cans, i, 1)
f(Asc(c) - 64) = True
Next i
For i = 1 To ①______
c = Mid(ans, i, 1)
If f(Asc(c) - 64) = False Then
count = 0: Exit For
Else
count = count + 1
End If
Next i
If count = 0 Then
Label4.Caption = "0分"
ElseIf ②______ Then
Label4.Caption = "2分"
Else
Label4.Caption = "1分"
End If
End Sub
(3)若去除加框处代码,且将文本框Text2的内容改为“BCD”,标签Label4显示的内容是_______。

(1)要使程序运行后,窗体Form1的标题栏中显示“评分”,正确的做法是_____ (单选,填字母:
A.将窗体的Text属性改为“评分”/ | B.在Form1_Load事件中输入代码Form1.Caption=”评分”/ | C.在Form1_Load事件中输入代码Form1.Name=”评分”); |
Private Sub Command1Click
Dim cans As String ,ans As String ,c As String ,count As Integer
Dim f(1 To 6) As Boolean
cans = Text1.Text:ans = Text2.Text
count = 0
For i = 1 To Len(cans)
c = Mid(cans, i, 1)
f(Asc(c) - 64) = True
Next i
For i = 1 To ①______
c = Mid(ans, i, 1)
If f(Asc(c) - 64) = False Then
count = 0: Exit For
Else
count = count + 1
End If
Next i
If count = 0 Then
Label4.Caption = "0分"
ElseIf ②______ Then
Label4.Caption = "2分"
Else
Label4.Caption = "1分"
End If
End Sub
(3)若去除加框处代码,且将文本框Text2的内容改为“BCD”,标签Label4显示的内容是_______。
下列VB程序段的功能为:生成n个不重复的随机整数,保存在数组a中,并升序排序。
Const n = 6
Dim a(1 To n) As Integer, f(1 To 10) As Boolean
Dim tmp As Integer, i As Integer, j As Integer, t As Integer
’f数组各元素的初值置为False,代码略
For i = 1 To (1)
t = Int(1 + Rnd * 10)
If Not f(t) Then
a(i) = t : f(t) = True
For j = (2)
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
End If
Next j
Else
(3)
End If
Next i
上述程序段3个方框处的表达式分别为
Const n = 6
Dim a(1 To n) As Integer, f(1 To 10) As Boolean
Dim tmp As Integer, i As Integer, j As Integer, t As Integer
’f数组各元素的初值置为False,代码略
For i = 1 To (1)
t = Int(1 + Rnd * 10)
If Not f(t) Then
a(i) = t : f(t) = True
For j = (2)
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
End If
Next j
Else
(3)
End If
Next i
上述程序段3个方框处的表达式分别为
A.(1)n - 1 (2)2 to i (3)i = i - 1 |
B.(1)n (2)i to 2 Step -1 (3)i = i - 1 |
C.(1)n - 1 (2)2 to i (3)t = Int(1 + Rnd * 10) |
D.(1)n (2)i to 2 Step -1 (3)t = Int(1 + Rnd * 10) |
小王编写VB程序,实现如下功能:在Text1中输入1~ 9之间的任意一个数字,单击“计算”按钮Command1, 计算该数字的阶乘并显示在标签Label2中。程序运行界面如图所示:
(1)如图所示,窗体中(不包含窗体本身)的对象共有__个(填数字)。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
s = 1
i =______
If i >= 1 And i <= 9 Then
For j = 1 To i
s = _______
Next j
Label2.Caption = Str(i) & "的阶乘为:" & Str(s)
Else
Label2.Caption = "请重新输入1~ 9之间的任意数字"
End If
End Sub
(3)程序中,若将变量s的类型由Long改为Integer,在文本框Text1中输入的内容为“9”,单击“计算”按钮后,程序运行将会出现什么情况____(单选,填字母:

(1)如图所示,窗体中(不包含窗体本身)的对象共有__个(填数字)。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, s As Longs = 1
i =______
If i >= 1 And i <= 9 Then
For j = 1 To i
s = _______
Next j
Label2.Caption = Str(i) & "的阶乘为:" & Str(s)
Else
Label2.Caption = "请重新输入1~ 9之间的任意数字"
End If
End Sub
(3)程序中,若将变量s的类型由Long改为Integer,在文本框Text1中输入的内容为“9”,单击“计算”按钮后,程序运行将会出现什么情况____(单选,填字母:
A.溢出 / | B.类型不匹配 / | C.要求对象)。 |
编写“十六进制加法”程序。程序运行时,在文本框Text1和文本框Text2分别输入两个十六进制数,单击“计算”按钮后在文本框Text3上输出两个十六进制相加后的结果。程序运行如图所示。

(1)观察代码,触发代码执行的事件名是________________________
(2)实现上述功能的VB程序如下,请在划线处填人合适的代码。
Private Sub Cmd1_Click()
Dim a1 As String, a2 As String, sum As String, t As String
Dim b1 As Integer, b2 As Integer
Dim dist As Integer, x As Integer, jw As Integer
a1 = Text1.Text: a2 = Text2.Text: sum = ""
dist = Len(a1) - Len(a2)
If dist < 0 Then
t = a1: a1 = a2: a2 = t
___________________
End If
For i = 1 To dist
a2 = "0" + a2
Next i
jw = 0
For i = __________________________
If Mid(a1, i, 1) >= "A" And Mid(a1, i, 1) <= "F" Then
b1 = Asc(a1) - 55
Else
b1 = Val(Mid(a1, i, 1))
End If
If Mid(a2, i, 1) >= "A" And Mid(a2, i, 1) <= "F" Then
b2 = Asc(a2) - 55
Else
b2 = Val(Mid(a2, i, 1))
End If
x = b1 + b2 + jw
jw = x \ 16
If __________________ Then
sum = Chr(x Mod 16 + 55) + sum
Else
sum = Str(x Mod 16) + sum
End If
Next i
If jw = 1 Then sum = "1" + sum
Text3.Text = sum
End Sub
(3)若将代码中加框处代码删除,则图中Text3中显示的结果为_________。

(1)观察代码,触发代码执行的事件名是________________________
(2)实现上述功能的VB程序如下,请在划线处填人合适的代码。
Private Sub Cmd1_Click()
Dim a1 As String, a2 As String, sum As String, t As String
Dim b1 As Integer, b2 As Integer
Dim dist As Integer, x As Integer, jw As Integer
a1 = Text1.Text: a2 = Text2.Text: sum = ""
dist = Len(a1) - Len(a2)
If dist < 0 Then
t = a1: a1 = a2: a2 = t
___________________
End If
For i = 1 To dist
a2 = "0" + a2
Next i
jw = 0
For i = __________________________
If Mid(a1, i, 1) >= "A" And Mid(a1, i, 1) <= "F" Then
b1 = Asc(a1) - 55
Else
b1 = Val(Mid(a1, i, 1))
End If
If Mid(a2, i, 1) >= "A" And Mid(a2, i, 1) <= "F" Then
b2 = Asc(a2) - 55
Else
b2 = Val(Mid(a2, i, 1))
End If
x = b1 + b2 + jw
jw = x \ 16
If __________________ Then
sum = Chr(x Mod 16 + 55) + sum
Else
sum = Str(x Mod 16) + sum
End If
Next i
If jw = 1 Then sum = "1" + sum
Text3.Text = sum
End Sub
(3)若将代码中加框处代码删除,则图中Text3中显示的结果为_________。
执行程序后,a数组各元素是( )
Dim a(1 To 7) As Integer
a(1) = 14: a(2) = 15: a(3) = 0: a(4) = 11: a(5) = 13: a(6) = 21: a(7) = 17
i = 6: flag = True
Do While i > 1 And flag
If a(i) Mod 3 = 0 And a(i) <> 0 Then
t = a(i): a(i) = a(i + 1): a(i + 1) = t
ElseIf a(i) = 0 Then
flag = flase
ElseIf a(i + 1) Mod 2 = 1 Then
a(i) = Abs(a(i) - a(i + 1))
End If
i = i - 1
Loop
Dim a(1 To 7) As Integer
a(1) = 14: a(2) = 15: a(3) = 0: a(4) = 11: a(5) = 13: a(6) = 21: a(7) = 17
i = 6: flag = True
Do While i > 1 And flag
If a(i) Mod 3 = 0 And a(i) <> 0 Then
t = a(i): a(i) = a(i + 1): a(i + 1) = t
ElseIf a(i) = 0 Then
flag = flase
ElseIf a(i + 1) Mod 2 = 1 Then
a(i) = Abs(a(i) - a(i + 1))
End If
i = i - 1
Loop
A.14,0,15,4,17,13,21 | B.14,15,0,11,4,17,21 |
C.15,14,0,11,4,17,21 | D.14,15,0,11,13,4,17 |