- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- + 面向对象程序设计 VB开发工具
- 程序设计语言
- 循环结构
- 分支结构
- 顺序结构
- 类、对象、属性、方法、事件和事件处理的概念
- VB应用程序的界面设计与调试
- 基本数据类型
- 常量、变量、数组
- 常用的标准函数
- 基本运算及表达式
- 赋值语句
- 选择语句
- 循环语句
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
某 VB 的事件过程如下:
Private Sub Command1_Click()
Dim a As Integer
a = Val(Text1.Text)
a = 3 * a + 1
Text1.Text = Str(a)
End Sub
程序运行时,在文本框 Text1 中输入 1,连续两次单击命令按钮 Command1 后,文本框 Text1中显示的内容是( )
Private Sub Command1_Click()
Dim a As Integer
a = Val(Text1.Text)
a = 3 * a + 1
Text1.Text = Str(a)
End Sub
程序运行时,在文本框 Text1 中输入 1,连续两次单击命令按钮 Command1 后,文本框 Text1中显示的内容是( )
A.13 | B.9 | C.4 | D.1 |
李雷收到了朋友发给他的一封奇怪的邮件,里面有段内容是由一些数字和符号组成。信上面说,这段内容是加密后的内容,并给出了具体加密方法(假定原文的英文字母都是大写的),具体方法如下:
(1)“A”变为一个1到100内的随机整数×27+1,“B”变为一个1到100内的随机整数×27+2,……,“Z”变为一个1到100内的随机整数×27+26;
(2)每个字母变为数字后会加上一个“-”用来分隔数字;
(3)其他空格和标点字符都按原文表示。
李雷利用VB编写了一个解密程序,功能如下:将邮件中密文的内容复制到文本框Text1中,点击“解密”按钮Command1后,程序将解密后的内容显示在文本框Text2中。
(1)实现上述功能的VB程序如下,请在划线处填入合适的代码。
(2)根据描述,若密文为“1905-1442-” ,则表示的是________________。
Private Sub Command1_Click()
Dim s As String, yw As String, t As String
Dim value As Integer
s=Text1.Text
value=0
yw=""
For i=1 To Len(s)
___________________ ‘①
If t>="0" And t<="9" Then
value=value*10+Val(t)
Else
___________________ ‘③
End If
Next i
Text2.Text=yw
End Sub
(1)“A”变为一个1到100内的随机整数×27+1,“B”变为一个1到100内的随机整数×27+2,……,“Z”变为一个1到100内的随机整数×27+26;
(2)每个字母变为数字后会加上一个“-”用来分隔数字;
(3)其他空格和标点字符都按原文表示。

李雷利用VB编写了一个解密程序,功能如下:将邮件中密文的内容复制到文本框Text1中,点击“解密”按钮Command1后,程序将解密后的内容显示在文本框Text2中。
(1)实现上述功能的VB程序如下,请在划线处填入合适的代码。
(2)根据描述,若密文为“1905-1442-” ,则表示的是________________。
Private Sub Command1_Click()
Dim s As String, yw As String, t As String
Dim value As Integer
s=Text1.Text
value=0
yw=""
For i=1 To Len(s)
___________________ ‘①
If t>="0" And t<="9" Then
value=value*10+Val(t)
ElseIf t="-" Then
yw=yw+Chr(Asc("A")+value Mod 27-1)
____________________ ‘②Else
___________________ ‘③
End If
Next i
Text2.Text=yw
End Sub
编写“二进制数转换为十六进制数”程序,实现如下功能:在文本框 Text1 输入一个二进制数,单击“转换”按钮 Command1,将二进制数转换为十六进制数并在文本框 Text2 中显示。程序运行界面如下图所示。

(1)设计如图所示的程序界面,至少要使用_____个类(填数字)。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s1 As String, s2 As String
Dim i As Integer, x As Integer
Const code="0123456789ABCDEF"
s1=Text1.Text
s2=""
Do While Len(s1) Mod 4<>0
s1="0"+s1
Loop
x=0
i=1
Do While i<=Len(s1)
x=x*2+Val(Mid(s1,i,1))
i=i+1
If ____________ Then ‘(1)
s2=s2+Mid(code,x+1,1)
______________ ‘(2)
End If
Loop
Text2.Text=s2
End Sub
(3)若文本框 Text1 中输入的内容为“101101” ,单击“转换”按钮后,文本框 Text2 中显示的内容是_______。

(1)设计如图所示的程序界面,至少要使用_____个类(填数字)。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s1 As String, s2 As String
Dim i As Integer, x As Integer
Const code="0123456789ABCDEF"
s1=Text1.Text
s2=""
Do While Len(s1) Mod 4<>0
s1="0"+s1
Loop
x=0
i=1
Do While i<=Len(s1)
x=x*2+Val(Mid(s1,i,1))
i=i+1
If ____________ Then ‘(1)
s2=s2+Mid(code,x+1,1)
______________ ‘(2)
End If
Loop
Text2.Text=s2
End Sub
(3)若文本框 Text1 中输入的内容为“101101” ,单击“转换”按钮后,文本框 Text2 中显示的内容是_______。
某木材加工厂需要把购入的木料切割成长度为3米和7米两种规格的线材。现要求编写VB程序(运行界面如图所示),实现如下功能:在文本框Text1中输入木材长度,单击“计算”按钮Command1,计算出一种废料长度最小的切割方案,在文本框Text2和文本框Text3中分别输出该切割方案所得3米和7米两种规格线材的数量。请将代码补充完整。

Private Sub Command1_Click ()
Dim length As Single '木料长度
Dim min As Single '最小废料长度
Dim x As Integer '3米规格线材数量
Dim y As Integer '7米规格线材数量
Dim f As Single '废料长度
Dim a As Integer '废料最少的切割方案所得3米规格线材数量
Dim b As Integer '废料最少的切割方案所得7米规格绒材数量
length=Val(Text1.Text)
min=length
For x=0 To _________ ‘(1)
y=(length-3*x)\7
____________ ‘(2)
If f<min Then
min=f
a=x
_____________ ‘(3)
End If
Next x
Text2.Text=Str(a)
Text3.Text=Str(b)
End Sub

Private Sub Command1_Click ()
Dim length As Single '木料长度
Dim min As Single '最小废料长度
Dim x As Integer '3米规格线材数量
Dim y As Integer '7米规格线材数量
Dim f As Single '废料长度
Dim a As Integer '废料最少的切割方案所得3米规格线材数量
Dim b As Integer '废料最少的切割方案所得7米规格绒材数量
length=Val(Text1.Text)
min=length
For x=0 To _________ ‘(1)
y=(length-3*x)\7
____________ ‘(2)
If f<min Then
min=f
a=x
_____________ ‘(3)
End If
Next x
Text2.Text=Str(a)
Text3.Text=Str(b)
End Sub
有如下VB程序段:
Dim a(1 To 5) As Integer
Pos=-1
i=1
Do While i<=10
If i Mod 2=0 Then a(i)=i*2 Else a(i)=i
i=i+1
Loop
i=10
Do While i>=1
If a(i)=12 Then Pos=i
i=i-1
Loop
该程序段运行后,变量Pos值是( )
Dim a(1 To 5) As Integer
Pos=-1
i=1
Do While i<=10
If i Mod 2=0 Then a(i)=i*2 Else a(i)=i
i=i+1
Loop
i=10
Do While i>=1
If a(i)=12 Then Pos=i
i=i-1
Loop
该程序段运行后,变量Pos值是( )
A.1 | B.2 | C.6 | D.10 |
在文本框Text1中输入一组12位以内的二进制数,将该二进制数转化为十六进制数后在Label1中输出。程序运行后如图所示,请完成以下题目。

(1)若要在窗体加载时,自动将文本框宽度调整为5000,则需在Form_Load()过程中加入语句Text1._____=5000(填字母:
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim a(1 To 12) As String ’a数组用以存储二进制数
Dim b(1 To 3) As Integer ’b数组用以存储十六进制数
Dim m, n As String
Dim i, j, k As Integer
m = ①_______
For i = 12 To 12 - Len(m) + 1 Step -1 ’将每位二进制数保存到数组a中
a(i) = ②______
Next i
For i = 1 To 3 ’将每4位二进制数转化为十进制数后保存到数组b中
For j = 4 To 1 Step -1
b(i) = b(i) + Val(a(i * 4 - j + 1)) * 2 ^ (j - 1)
Next j
Next i
For i = 1 To 3
If b(i) < 10 Then m = Chr(b(i) + 48) Else m = Chr(b(i) + 55)
n = n & m
Next i
Label1.Caption = "转换后的十六进制数为:" + n
End Sub
(3)若程序运行后,若在文本框中输入二进制数1101101101,则在Label1中显示的内容为:转换后的十六进制数为:____。

(1)若要在窗体加载时,自动将文本框宽度调整为5000,则需在Form_Load()过程中加入语句Text1._____=5000(填字母:
A.Caption / | B.Height / | C.Width / | D.Left)。 |
Private Sub Command1_Click()
Dim a(1 To 12) As String ’a数组用以存储二进制数
Dim b(1 To 3) As Integer ’b数组用以存储十六进制数
Dim m, n As String
Dim i, j, k As Integer
m = ①_______
For i = 12 To 12 - Len(m) + 1 Step -1 ’将每位二进制数保存到数组a中
a(i) = ②______
Next i
For i = 1 To 3 ’将每4位二进制数转化为十进制数后保存到数组b中
For j = 4 To 1 Step -1
b(i) = b(i) + Val(a(i * 4 - j + 1)) * 2 ^ (j - 1)
Next j
Next i
For i = 1 To 3
If b(i) < 10 Then m = Chr(b(i) + 48) Else m = Chr(b(i) + 55)
n = n & m
Next i
Label1.Caption = "转换后的十六进制数为:" + n
End Sub
(3)若程序运行后,若在文本框中输入二进制数1101101101,则在Label1中显示的内容为:转换后的十六进制数为:____。
(加试题)在文本框Text1中输入待加密的n个字符(仅由ASCII码字符构成,最多支持960个字符),输入后单击加密按钮,在文本框Text2中产生密文。加密方式如下:
① 定义一个数组a(1 to 961)。产生一个3到6之间的随机整数k,将十进制数960均分成k份,字符在字符串中的位置除以k的余数决定该字符存放在第几份数据中(余数为1保存在第一份数据中,余数为2保存在第二份数据中……,余数为0保存在第k份数据中);
② 用十进制数127减去每个字符的ASCII码值,得到的差作为该字符的密文,并保存在数组a中,同一段内的密文依次存放;
③ 将随机产生的数k加64后保存在数组元素a(961)中,并一起参与加密;
④ 将数组a中所有有密文值的数组元素从后往前依次存放到数组b中;
⑤ 将数组b中的每个密文用3位数字保存,不足3位的前面用0补足,然后依次连接保存在变量sc中;
⑥ 在文本框Text2中输出sc。
例如:
① 若现有待加密的字符串为“zp123”,产生的随机数k=3,则960分成3份,每份可存放320个值,分别为a(1)至a(320),a(321)至a(640),a(641)至a(960);
② 由于Asc(“z”) =122,则127-122=5。字符“z”在待加密字符串中的位置是1,除以k的余数为1,因此数字“5”放在第一份数据的第一个位置,即a(1)=5;同理可得,第一份数据为a(1)=5,a(2)=77;第二份数据为a(321)=15,a(322)=76;第三份数据为a(641)=78;
③ 将随机产生的k与十进制数64的和保存到a数组的最后一个值中,即a(961)=64+3=67;
④ 将数组a中所有有密文值的数组元素从后往前依次存放到数组b中,得到b(1)=67,b(2)=78,b(3)=76,b(4)=15,b(5)=77,b(6)=5;
⑤ 将数组b中的每个元素用0补足3位后依次连接并保存在sc中,得到sc=“067078076015077005”;
⑥ 输出sc。
注:(asc(“0”)=48,asc(“A”)=65,asc(“a”)=97)

Private Sub command1_Click()
Dim a(1 To 961) As Integer
Dim sr, sc As String
Dim i, j, k, m, n, t As Integer
Dim b(1 To 961) As Integer
Randomize
k = Int(Rnd * 4 + 3)
sr = text1.Text
For i = 1 To 961
a(i) = -1
Next i
a(961) = k + 64
t = 960 / k
For i = 1 To Len(sr)
m = i Mod k - 1
n = i \ k + 1
If i Mod k = 0 then n = n - 1: m = m + k
____= 127 - Asc(Mid(sr, i, 1)) ’将密文存储到数组a中
Next i
For i = 1 To Len(sr) + 1
j = j + 1
Do While a(j) = -1
j = j + 1
Loop
b(Len(sr) + 2 - i) = a(j) ’将有密文值的a数组元素存储到数组b中
Next i
For i = 1 To Len(sr) + 1
sc = ②______ ’连接密文并保存到sc中
Next i
text2.Text = sc
End Sub
Function space(x As Integer) As String
For i = 1 To ③______
space = space & "0"
Next i
End Function
(1)若加密后的密文为“068029041”,则随机数是____;在Text1中输入的明文是____。
(2)在空白处填写缺失的代码。
① 定义一个数组a(1 to 961)。产生一个3到6之间的随机整数k,将十进制数960均分成k份,字符在字符串中的位置除以k的余数决定该字符存放在第几份数据中(余数为1保存在第一份数据中,余数为2保存在第二份数据中……,余数为0保存在第k份数据中);
② 用十进制数127减去每个字符的ASCII码值,得到的差作为该字符的密文,并保存在数组a中,同一段内的密文依次存放;
③ 将随机产生的数k加64后保存在数组元素a(961)中,并一起参与加密;
④ 将数组a中所有有密文值的数组元素从后往前依次存放到数组b中;
⑤ 将数组b中的每个密文用3位数字保存,不足3位的前面用0补足,然后依次连接保存在变量sc中;
⑥ 在文本框Text2中输出sc。
例如:
① 若现有待加密的字符串为“zp123”,产生的随机数k=3,则960分成3份,每份可存放320个值,分别为a(1)至a(320),a(321)至a(640),a(641)至a(960);
② 由于Asc(“z”) =122,则127-122=5。字符“z”在待加密字符串中的位置是1,除以k的余数为1,因此数字“5”放在第一份数据的第一个位置,即a(1)=5;同理可得,第一份数据为a(1)=5,a(2)=77;第二份数据为a(321)=15,a(322)=76;第三份数据为a(641)=78;
③ 将随机产生的k与十进制数64的和保存到a数组的最后一个值中,即a(961)=64+3=67;
④ 将数组a中所有有密文值的数组元素从后往前依次存放到数组b中,得到b(1)=67,b(2)=78,b(3)=76,b(4)=15,b(5)=77,b(6)=5;
⑤ 将数组b中的每个元素用0补足3位后依次连接并保存在sc中,得到sc=“067078076015077005”;
⑥ 输出sc。
注:(asc(“0”)=48,asc(“A”)=65,asc(“a”)=97)

Private Sub command1_Click()
Dim a(1 To 961) As Integer
Dim sr, sc As String
Dim i, j, k, m, n, t As Integer
Dim b(1 To 961) As Integer
Randomize
k = Int(Rnd * 4 + 3)
sr = text1.Text
For i = 1 To 961
a(i) = -1
Next i
a(961) = k + 64
t = 960 / k
For i = 1 To Len(sr)
m = i Mod k - 1
n = i \ k + 1
If i Mod k = 0 then n = n - 1: m = m + k
____= 127 - Asc(Mid(sr, i, 1)) ’将密文存储到数组a中
Next i
For i = 1 To Len(sr) + 1
j = j + 1
Do While a(j) = -1
j = j + 1
Loop
b(Len(sr) + 2 - i) = a(j) ’将有密文值的a数组元素存储到数组b中
Next i
For i = 1 To Len(sr) + 1
sc = ②______ ’连接密文并保存到sc中
Next i
text2.Text = sc
End Sub
Function space(x As Integer) As String
For i = 1 To ③______
space = space & "0"
Next i
End Function
(1)若加密后的密文为“068029041”,则随机数是____;在Text1中输入的明文是____。
(2)在空白处填写缺失的代码。
(加试题)有如下程序段,文本框中输入19后单击命令按钮,则窗体中显示的数字为
Private Sub Command1_Click()
Dim m, n, sum, left, mid, key, s As Integer
Dim a(1 To 13) As Integer
a(1) = 2: a(2) = 3: a(3) = 8: a(4) = 16: a(5) = 19: a(6) = 27
a(7) = 29: a(8) = 32: a(9) = 49: a(10) = 64: a(11) = 72: a(12) = 99
m = 1: n = 12
key = Val(Text1.Text)
mid = (m + n + 1) \ 2
Do While a(mid) <> key And m <= n
If a(mid) > key Then n = mid - 1: left = left + 1 Else m = mid + 1
mid = (m + n) \ 2: sum = sum + 1
Loop
Print sum,left
End Sub
Private Sub Command1_Click()
Dim m, n, sum, left, mid, key, s As Integer
Dim a(1 To 13) As Integer
a(1) = 2: a(2) = 3: a(3) = 8: a(4) = 16: a(5) = 19: a(6) = 27
a(7) = 29: a(8) = 32: a(9) = 49: a(10) = 64: a(11) = 72: a(12) = 99
m = 1: n = 12
key = Val(Text1.Text)
mid = (m + n + 1) \ 2
Do While a(mid) <> key And m <= n
If a(mid) > key Then n = mid - 1: left = left + 1 Else m = mid + 1
mid = (m + n) \ 2: sum = sum + 1
Loop
Print sum,left
End Sub
A.1 1 | B.1 2 | C.2 1 | D.2 2 |
(加试题)如图所示程序运行时,点击“生成”按钮,随机产生100个不重复的仅由数字和大小写字母组成的3位字符串并显示在List1中,点击“排序”按钮,将所有字符串排序后在List2中输出。要求:数字开头的字符串在前并按升序排序,字母开头的字符串在后并按降序排序。

实现上述功能的代码如下,但划线处代码有错,请改正。
Private Sub Command1_Click()
‘随机产生100个不重复的仅由数字和大小写字母组成的3位字符串并存储到数组zfc(1)至zfc(100)中,同时在List1中显示,代码略。
Private Sub Command2_Click()
Dim zfc(1 to 101) as integer
Dim i, j, m, k As Integer
Dim s As Boolean
For i = 1 To 100
If Asc(Mid(zfc(i), 1, 1)) >=48 Then t = t + 1
________________
Next i
For i = 1 To 99
For j = i + 1 To 100
_____________
If zfc(j - 1) > zfc(j) Then
zfc(101) = zfc(j - 1): zfc(j - 1) = zfc(j): zfc(j) = zfc(101)
End If
Next j
Next i
For i = t + 1 To 99
k = i
For j = i + 1 To 100
If zfc(k) < zfc(j) Then k = j
Next j
If k <> i Then zfc(101) = zfc(i): zfc(i) = zfc(k): zfc(k) = zfc(101)
Next i
For i = 1 To 100
List2.AddItem zfc(i)
Next i
End sub

实现上述功能的代码如下,但划线处代码有错,请改正。
Private Sub Command1_Click()
‘随机产生100个不重复的仅由数字和大小写字母组成的3位字符串并存储到数组zfc(1)至zfc(100)中,同时在List1中显示,代码略。
Private Sub Command2_Click()
Dim zfc(1 to 101) as integer
Dim i, j, m, k As Integer
Dim s As Boolean
For i = 1 To 100
If Asc(Mid(zfc(i), 1, 1)) >=48 Then t = t + 1

Next i
For i = 1 To 99
For j = i + 1 To 100

If zfc(j - 1) > zfc(j) Then
zfc(101) = zfc(j - 1): zfc(j - 1) = zfc(j): zfc(j) = zfc(101)
End If
Next j
Next i
For i = t + 1 To 99
k = i
For j = i + 1 To 100
If zfc(k) < zfc(j) Then k = j
Next j
If k <> i Then zfc(101) = zfc(i): zfc(i) = zfc(k): zfc(k) = zfc(101)
Next i
For i = 1 To 100
List2.AddItem zfc(i)
Next i
End sub