- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)某字符串(字节数为 2 的倍数)编码规则如下:
(1)将该字符串内码分成 2 个字节一组,每个字节前补上一个 0,构成 9 位二进制,顺次链接后得到 18 位二进制;
(2)将得到的 18 位二进制数字分成 3 组,每组 6 位;
(3)在每组数字前补上两个 0,得到 3 个字节的二进制数;
(4)将(3)中得到的三个字节的二进制数分别转换为十进制数;
(5)将每个十进制数转换为 1 个加密字符,对应的“ 密码表 ”按数值由小到大依次为 012345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/” 小明按照上述方法,设计了一个字符串(仅包含 ASCII 字符)加密的 VB 程序,功能如下:单击“加密”按钮 Command1,程序依次将文本框 Text1 中每 2 个字符的 ASCII 码值按编码规则转换为三个加密字符,连接这些加密字符,最后在文本框 Text2 中输出加密结果。程序效果如下图所示。

实现上述功能的 VB 程序如下:
(1)在 Text1 中输入明文“AB”,用上述加密算法得到的密文为_____。
(2)实现上述功能的 VB 程序如下。请在划线处填入合适的代码。
Function cc(n As Integer) As String
Dim s As String
s = "012345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"
①_____
End Function
Private Sub Command1_Click()
Dim n As Integer, s As String, i As Integer, ss As String
Dim a1 As Integer, a2 As Integer
Dim b1 As Integer, b2 As Integer, b3 As Integer
s = Text1.Text
n = Len(s)
ss = ""
For i = 1 To n Step 2
a1 = Asc(Mid(s, i, 1))
②_____
b1 = a1 \ 8
b2 = ③_____
b3 = a2 Mod 64
ss = ss + cc(b1) + cc(b2) + cc(b3) Next i
Text2.Text = ss
End Sub
(1)将该字符串内码分成 2 个字节一组,每个字节前补上一个 0,构成 9 位二进制,顺次链接后得到 18 位二进制;
(2)将得到的 18 位二进制数字分成 3 组,每组 6 位;
(3)在每组数字前补上两个 0,得到 3 个字节的二进制数;
(4)将(3)中得到的三个字节的二进制数分别转换为十进制数;
(5)将每个十进制数转换为 1 个加密字符,对应的“ 密码表 ”按数值由小到大依次为 012345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/” 小明按照上述方法,设计了一个字符串(仅包含 ASCII 字符)加密的 VB 程序,功能如下:单击“加密”按钮 Command1,程序依次将文本框 Text1 中每 2 个字符的 ASCII 码值按编码规则转换为三个加密字符,连接这些加密字符,最后在文本框 Text2 中输出加密结果。程序效果如下图所示。

实现上述功能的 VB 程序如下:
(1)在 Text1 中输入明文“AB”,用上述加密算法得到的密文为_____。
(2)实现上述功能的 VB 程序如下。请在划线处填入合适的代码。
Function cc(n As Integer) As String
Dim s As String
s = "012345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"
①_____
End Function
Private Sub Command1_Click()
Dim n As Integer, s As String, i As Integer, ss As String
Dim a1 As Integer, a2 As Integer
Dim b1 As Integer, b2 As Integer, b3 As Integer
s = Text1.Text
n = Len(s)
ss = ""
For i = 1 To n Step 2
a1 = Asc(Mid(s, i, 1))
②_____
b1 = a1 \ 8
b2 = ③_____
b3 = a2 Mod 64
ss = ss + cc(b1) + cc(b2) + cc(b3) Next i
Text2.Text = ss
End Sub
编“数字按序组合输出十进制数”程序,实现如下功能:在文本框 Text1 中输入包含数字的字符串,单击“生成”按钮 Command1,程序将输入的字符串中所有数字按序组合成一个十进制数,最后将该十进制数在文本框 Text2 中显示。程序运行界面如下图所示。
(1) 要使程序运行时,窗体 Form1 标题显示“数字按序组合输出十进制数”,可在 Form_Load 事件过程屮添加语句_________(单选,填字母:

(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click() Dim s As String , ch As String Dim x As Integer , i As Integer s = Text1.Text
x = 0 i = 1
For i = 1 To Len(s)
①_____________
If ch >= "0" And ch <= "9" Then
②_________
End If
Next i
Text2.Text = Str(x)
End Sub
(3)若文本框 Text1 中输人的内容为“My3day65New”,单击“生成”按钮后,则文本框 Text2 中显示的内容是_____。
(1) 要使程序运行时,窗体 Form1 标题显示“数字按序组合输出十进制数”,可在 Form_Load 事件过程屮添加语句_________(单选,填字母:
A.Form1 = "数字按序组合输出十进制数" / | B.Forml.Text="数字按序组合输出十进制数"/ | C.Form1.Caption= "数字按序组合输出十进制数")。 |

(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click() Dim s As String , ch As String Dim x As Integer , i As Integer s = Text1.Text
x = 0 i = 1
For i = 1 To Len(s)
①_____________
If ch >= "0" And ch <= "9" Then
②_________
End If
Next i
Text2.Text = Str(x)
End Sub
(3)若文本框 Text1 中输人的内容为“My3day65New”,单击“生成”按钮后,则文本框 Text2 中显示的内容是_____。
(加试题)编号为 1 到 8 的纸牌顺时针排成一圈,现从编号为 1 的牌从数字 1 开始顺时针数下去,1、2、3、„、20、21、„,一圈又一圈,则当数到数字 N 时,所在纸牌的编号为( )
A.N Mod 8 | B.(N+1) Mod 9 | C.1+(N-1) Mod 8 | D.1+(N-1) Mod 7 |
(加试题)某活动要从 100 名参赛者中选出成绩最高的前十名给予一定的奖励。活动组织者编写了如下程序,功能是根据成绩进行排序,程序中数组 a 保存所有参赛者的组次,数组 b 保存对应的成绩,如第 1 位参赛者的组次 1 保存在 a(1)中,成绩保存在 b(1)中。程序界面如图所示,左边列表框 List1 中显示原始数据(序号和相应的成绩),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示前 10 名选手的序号和成绩在列表框 List2 中,若最后一名成绩有相同的也一起输出。界面如下图所示:

实现上述功能的 VB 程序如下,但划线处代码有错,请改正。
Const n=100
Dim a(1 To n) As Integer
Dim b(1 To n) As Integer
Private Sub Form_Load() '窗体被加载时
‘获取原始数据,将参赛者序号和最后得分分别存在数组 a 和数组 b 内,并在列表框 List1 中显示。代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, temp As Integer
List2.Clear
For i = 1 To 10 k = i
For j = 10 To i+1 ‘①________
If b(k) < b(j) Then k = j
End If
Next j
If k <> i Then
temp = b(i): b(i) = b(k): b(k) = temp temp = a(i): a(i) = a(k): a(k) = temp
End If
List2.AddItem Str(a(i)) + " " + Str(b(i)) Next i
m = 10
For i = 11 To n
If b(i) = b(i-1) then ‘②________
m = m + 1
List2.AddItem Str(a(i)) + " " + Str(b(i)) End If
Next i
Label3.Caption = "本次十佳歌手一共有" + Str(m) + "组"
End Sub

实现上述功能的 VB 程序如下,但划线处代码有错,请改正。
Const n=100
Dim a(1 To n) As Integer
Dim b(1 To n) As Integer
Private Sub Form_Load() '窗体被加载时
‘获取原始数据,将参赛者序号和最后得分分别存在数组 a 和数组 b 内,并在列表框 List1 中显示。代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, temp As Integer
List2.Clear
For i = 1 To 10 k = i
For j = 10 To i+1 ‘①________
If b(k) < b(j) Then k = j
End If
Next j
If k <> i Then
temp = b(i): b(i) = b(k): b(k) = temp temp = a(i): a(i) = a(k): a(k) = temp
End If
List2.AddItem Str(a(i)) + " " + Str(b(i)) Next i
m = 10
For i = 11 To n
If b(i) = b(i-1) then ‘②________
m = m + 1
List2.AddItem Str(a(i)) + " " + Str(b(i)) End If
Next i
Label3.Caption = "本次十佳歌手一共有" + Str(m) + "组"
End Sub
有如下VB程序段:
i = 1: j = 6: c = 0: f = False
key = Val(Text1.Text)
Do While i<= j And Not f
c = c + 1
m = Int((i + j) / 2)
If key = a(m) Then f = True
If key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素a(1)到a(6)依次为“8,23,25,32,46,57”,文本框Text1的内容为“32”。执行程序后,下列说法不正确的是
i = 1: j = 6: c = 0: f = False
key = Val(Text1.Text)
Do While i<= j And Not f
c = c + 1
m = Int((i + j) / 2)
If key = a(m) Then f = True
If key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素a(1)到a(6)依次为“8,23,25,32,46,57”,文本框Text1的内容为“32”。执行程序后,下列说法不正确的是
A.变量c的值为3 | B.变量i的值为4 | C.变量j的值为4 | D.变量m的值为4 |
“旋转数组”过程是指将数组中的元素向右移动k个位置,其中k是非负数。以数组a向右移动3个位置为例,其移动过程有如下两种方法:
原始数据:
方法一:
①向右旋转1步:
②向右旋转2步:
③向右旋转3步:
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
②将原a(4)值放至旋转3个位置后位置a(3):
③将原a(3)值放至旋转3个位置后位置a(2):
④将原a(2)值放至旋转3个位置后位置a(1):
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:

(1)当文本框Text3中输入内容修改为3时,执行该程序后,a(3)的值为___________。
(2)请在划线处填入合适的代码。
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer,cnt As Integer,c As Integer,t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1:start = 1:c = a(i):cnt = 1
Do While cnt<= p '方法二
a(i) = c
If ________________ Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If
For i = 1 To k '方法一
temp = a(n)
For j = _______________
a(j) = a(j - 1)
Next j
For i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
原始数据:
a(1) | a(2) | a(3) | a(4) |
1 | 2 | 3 | 4 |
方法一:
①向右旋转1步:
a(1) | a(2) | a(3) | a(4) |
4 | 1 | 2 | 3 |
②向右旋转2步:
a(1) | a(2) | a(3) | a(4) |
3 | 4 | 1 | 2 |
③向右旋转3步:
a(1) | a(2) | a(3) | a(4) |
2 | 3 | 4 | 1 |
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
a(1) | a(2) | a(3) | a(4) |
1 | 2 | 3 | 1 |
②将原a(4)值放至旋转3个位置后位置a(3):
a(1) | a(2) | a(3) | a(4) |
1 | 2 | 4 | 1 |
③将原a(3)值放至旋转3个位置后位置a(2):
a(1) | a(2) | a(3) | a(4) |
1 | 3 | 4 | 1 |
④将原a(2)值放至旋转3个位置后位置a(1):
a(1) | a(2) | a(3) | a(4) |
2 | 3 | 4 | 1 |
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:

(1)当文本框Text3中输入内容修改为3时,执行该程序后,a(3)的值为___________。
(2)请在划线处填入合适的代码。
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer,cnt As Integer,c As Integer,t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1:start = 1:c = a(i):cnt = 1
Do While cnt<= p '方法二
i =_____________
t = a(i)a(i) = c
If ________________ Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If
cnt = cnt + 1
LoopFor i = 1 To k '方法一
temp = a(n)
For j = _______________
a(j) = a(j - 1)
Next j
a(p + 1) = temp
Next iFor i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:
旋转数组a的最小元素是5。
数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:
旋转数组d的最小元素是0。
小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果图所示,实现该功能的的VB程序如下。

(1)要使程序运行时,文本框Text1无显示内容,下列方法不能实现该要求的是_______(单选,填字母:A.在Form_Load事件处理过程中添加语句“Text1.Text=""”/B.在Command1_Click事件处理过程中添加语句“Text1.Text=""”/C.设计程序界面时,在属性面板设置文本框Text1的Text属性值为空)
(2)程序代码中,加框处有错,请改正。
(3)程序代码中,将划线处代码补充完整。
(4)程序代码中,虚线框内自定义函数中主要采用的算法是__________(单选,填字母:A.冒泡排序/B.选择排序/C.顺序查找/
Dim n As Integer
Dim d(1 To 100) As Integer '数组 d 存储待排序数据
Private Sub Command1_Click()
'按旋转数组规则将数据存入数组d中,代码略
End Sub
Private Sub Command2_Click()
Dim mid As Integer, L As Integer, R As Integer
L = 1: R = n
mid = L
Do While d(L) >= d(R)
If L=R Then'改错
mid = R
Exit Do
End If
mid = (L + R) \ 2
If d(L)=d(R) And d(mid)=d(R) Then
mid =______________ '填空
Exit Do
End If
If d(L) < d(mid) Then
L = mid
End If
Loop
Label2.Caption = "最小值为" + Str(d(mid))
End Sub

End If
Next i
End Function
数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:
a(1) | a(2) | a(3) | a(4) | a(5) |
28 | 42 | 55 | 5 | 22 |
旋转数组a的最小元素是5。
数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:
d(1) | d(2) | d(3) | d(4) | d(5) |
1 | 0 | 1 | 1 | 1 |
旋转数组d的最小元素是0。
小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果图所示,实现该功能的的VB程序如下。

(1)要使程序运行时,文本框Text1无显示内容,下列方法不能实现该要求的是_______(单选,填字母:A.在Form_Load事件处理过程中添加语句“Text1.Text=""”/B.在Command1_Click事件处理过程中添加语句“Text1.Text=""”/C.设计程序界面时,在属性面板设置文本框Text1的Text属性值为空)
(2)程序代码中,加框处有错,请改正。
(3)程序代码中,将划线处代码补充完整。
(4)程序代码中,虚线框内自定义函数中主要采用的算法是__________(单选,填字母:A.冒泡排序/B.选择排序/C.顺序查找/
A.对分查找)。 |
Dim d(1 To 100) As Integer '数组 d 存储待排序数据
Private Sub Command1_Click()
'按旋转数组规则将数据存入数组d中,代码略
End Sub
Private Sub Command2_Click()
Dim mid As Integer, L As Integer, R As Integer
L = 1: R = n
mid = L
Do While d(L) >= d(R)
If L=R Then'改错
mid = R
Exit Do
End If
mid = (L + R) \ 2
If d(L)=d(R) And d(mid)=d(R) Then
mid =______________ '填空
Exit Do
End If
If d(L) < d(mid) Then
L = mid
ElseIf d(mid) < d(R) Then
R = midEnd If
Loop
Label2.Caption = "最小值为" + Str(d(mid))
End Sub

End If
Next i
End Function
在Visual Basic程序中,王老师声明一个数组用于存储班级45位学生的手机号码,下列语句中合适的是( )
A.Dim Tel(1 To 45) As Integer | B.Dim Tel(1 To 45) As Long |
C.Dim Tel(45) As Long | D.Dim Tel(44) As String |