- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- + 算法实例
- 枚举算法
- 解析算法
- 排序算法
- 查找算法
- 递归算法
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1 中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2 中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。

实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, bottom As Integer
'获取排序前数据依次存储在数组a 中,并在文本框Text1 中显示。代码略
bottom = n : i = 1
Do While i <= bottom - 1
t = a(j): a(j) = a(j - 1): a(j - 1) = t
ElseIf a(j) = a(j - 1) Then ' 相邻两个数据相等,进行剔除处理
a(bottom)=a(j)
bottom = bottom - 1
End If
Text2.Text = " "
For i = 1 To bottom
End Sub

实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, bottom As Integer
'获取排序前数据依次存储在数组a 中,并在文本框Text1 中显示。代码略
bottom = n : i = 1
Do While i <= bottom - 1
For j = bottom To i + 1 Step -1
If a(j) < a(i) Thent = a(j): a(j) = a(j - 1): a(j - 1) = t
ElseIf a(j) = a(j - 1) Then ' 相邻两个数据相等,进行剔除处理
a(bottom)=a(j)
bottom = bottom - 1
End If
Next j
i = i + 1
LoopText2.Text = " "
For i = 1 To bottom
Text2.Text = Text2.Text + Str(a(i))
Next iEnd Sub
用VB编程解决一个问题:求所有五位数中满足能被17整除且十位数字为5的数之和。
(1)本题的所有五位数所指的范围是1~10000,10000~99999,10000~90000,还是11111~99999?写出本题的所有五位数所指的范围。
(2)算术运算符:除/、整除\、求余Mod。例子,设五位数为参数i,则i\10000为万位,(i\1000)Mod 10 为千位,类推,则五位数中十位数字为( ),i Mod 10为个位。写出五位数中十位数字为5的表示式。
(3)将本题程序填写完整。
Private Sub Command1_Click()
s = 0
For i = To
If i Mod 17 = 0 And =5 Then
s = s + i
End If
Next i
Print s
End Sub
(4)本题程序采用了什么算法?
(1)本题的所有五位数所指的范围是1~10000,10000~99999,10000~90000,还是11111~99999?写出本题的所有五位数所指的范围。
(2)算术运算符:除/、整除\、求余Mod。例子,设五位数为参数i,则i\10000为万位,(i\1000)Mod 10 为千位,类推,则五位数中十位数字为( ),i Mod 10为个位。写出五位数中十位数字为5的表示式。
(3)将本题程序填写完整。
Private Sub Command1_Click()
s = 0
For i = To
If i Mod 17 = 0 And =5 Then
s = s + i
End If
Next i
Print s
End Sub
(4)本题程序采用了什么算法?
小骆设计了一个程序,用来统计一段文字中句子的数量。规定以“。”或者“?”或者“!”结束的为句子。窗体界面和程序如下所示,请回答问题。


图1 图2
(1)应用程序界面设计时,用来输入文字的对象,使用了图2所示的“控件工具箱”中的 ________________(填写相应数字),
(2)Private Sub Command1_Click()
Dim s As String, r As String, k As Integer
k = 0
s=Text1.Text
For i = 1 To Len(s)
①
If r ="。" Or r ="!" Or r ="?" Then ②
Next i
Label1.Caption ="本段文字中含" + Str(k) + "句语句。"
End Sub
在程序划线处填写适当的表达式或语句,以实现程序功能。
程序中①划线处应填入____________________________。
程序中②划线处应填入____________________________。


图1 图2
(1)应用程序界面设计时,用来输入文字的对象,使用了图2所示的“控件工具箱”中的 ________________(填写相应数字),
(2)Private Sub Command1_Click()
Dim s As String, r As String, k As Integer
k = 0
s=Text1.Text
For i = 1 To Len(s)
①
If r ="。" Or r ="!" Or r ="?" Then ②
Next i
Label1.Caption ="本段文字中含" + Str(k) + "句语句。"
End Sub
在程序划线处填写适当的表达式或语句,以实现程序功能。
程序中①划线处应填入____________________________。
程序中②划线处应填入____________________________。
有如下程序段:
Dim a(1 To 10) As Integer
Dim i As Integer, j As Integer, m As Integer
Dim key As Integer
i = 1: j = 10: key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If key < a(m) Then
j = m - 1
ElseIf key > a(m) Then
i = m + 1
Else
Do While m > 1
If a(m - 1) = key Then
m = m - 1
Else
Exit Do
End If
Loop
Exit Do
End If
Loop
数组中a(1)到a(10)依次为“1,1,2,3,3,3,3,4,4,4”,若在文本框Text1中输入值3,经上述程序段执行后变量m的值为
Dim a(1 To 10) As Integer
Dim i As Integer, j As Integer, m As Integer
Dim key As Integer
i = 1: j = 10: key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If key < a(m) Then
j = m - 1
ElseIf key > a(m) Then
i = m + 1
Else
Do While m > 1
If a(m - 1) = key Then
m = m - 1
Else
Exit Do
End If
Loop
Exit Do
End If
Loop
数组中a(1)到a(10)依次为“1,1,2,3,3,3,3,4,4,4”,若在文本框Text1中输入值3,经上述程序段执行后变量m的值为
A.7 |
B.6 |
C.5 |
D.4 |
(加试题)一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数。如十进制整数26的二进制表示为11010,26是一个A类数。下列VB程序的功能是:统计前1000个自然数中A类数的个数,并在文本框中输出。请在划线处填入合适代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As Integer, t As Integer, k As Integer
s = 0
For i = 1 To 1000
n = i
t = 0
k = 0
Do While n > 0
If n Mod 2 = 1 Then t = t + 1 Else k = k + 1
___________________
Loop
If ___________________Then s = s + 1
Next i
Text1.Text = Str(s)
End Sub
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As Integer, t As Integer, k As Integer
s = 0
For i = 1 To 1000
n = i
t = 0
k = 0
Do While n > 0
If n Mod 2 = 1 Then t = t + 1 Else k = k + 1
___________________
Loop
If ___________________Then s = s + 1
Next i
Text1.Text = Str(s)
End Sub
(加试题)某排序算法的VB程序段如下:
n = 10
Text1.Text = ""
For i = 1 To 5
For j = n To i + 1 Step -1
If a(j) < a(i) Then
temp = a(j): a(j) = a(i): a(i) = temp
End If
Next j
Next i
For i = 1 To 10
Text1.Text = Text1.Text + Str(a(i))
Next i
数组元素a(1)到a(10)的值依次为“965,155,195,444,106,734,172,983,898,360”,执行该程序段,文本框Text1中显示的是
n = 10
Text1.Text = ""
For i = 1 To 5
For j = n To i + 1 Step -1
If a(j) < a(i) Then
temp = a(j): a(j) = a(i): a(i) = temp
End If
Next j
Next i
For i = 1 To 10
Text1.Text = Text1.Text + Str(a(i))
Next i
数组元素a(1)到a(10)的值依次为“965,155,195,444,106,734,172,983,898,360”,执行该程序段,文本框Text1中显示的是
A.106 155 172 195 360 444 734 898 965 983 |
B.106 155 172 195 360 734 444 983 898 965 |
C.983 965 898 734 444 360 172 195 155 106 |
D.106 155 172 195 360 965 444 734 898 983 |
有如下程序段:
Const n = 6
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, t As Integer
Do While True
For i=1 to n-1
If a(i)>a(i+1) then Exit For
Next i
If i < n Then
For i = 1 To n
j = Int(Rnd * 6) + 1
t = a(j): a(j) = a(i): a(i) = t
Next i
Else
Exit Do
End If
Loop
数组中a(1)到a(6)的值依次为“56,34,48,87,65,96”,经上述程序段执行后a(1)到a(6)的值依次为( )
Const n = 6
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, t As Integer
Do While True
For i=1 to n-1
If a(i)>a(i+1) then Exit For
Next i
If i < n Then
For i = 1 To n
j = Int(Rnd * 6) + 1
t = a(j): a(j) = a(i): a(i) = t
Next i
Else
Exit Do
End If
Loop
数组中a(1)到a(6)的值依次为“56,34,48,87,65,96”,经上述程序段执行后a(1)到a(6)的值依次为( )
A.96 87 65 56 48 34 |
B.34 48 56 65 87 96 |
C.选项A和B都有可能 |
D.选项A和B都不可能 |
(加试题)已知一无序数组a中的元素为"90,15,40,72,65,32,81,6",通过引入数组b存储数组a元素按升序排列时的下标,b数组元素为"8,2,6,3,5,4,7,1",使得a(b(1))≤a(b(2)) ≤a(b(3))……≤a(b(n)),从而对a数组中的数据进行对分查找。部分程序如下:

当文本框Text1中输入的值为32时,程序运行结束后变量c的值为

当文本框Text1中输入的值为32时,程序运行结束后变量c的值为
A.1 | B.2 | C.3 | D.4 |
(加试题)某密码的破译步骤如下:
(1)找出文章(以“.”结束)中所有用英文表示的数字(均为小写,数字范围1≤n≤20),单词与数字对应如下:

(2)将这些数字平方后除以100取余,得到两位数如00,04,21,96。
(3)把这些两位数按升序排成一行,组成一个最小的新数,如果新数开头为0,就去除。
(4)步骤(3)找出的最小数即为密码。
小明按照上述方法,设计了一个解密的VB程序,功能如下:单击“解密”按钮Commandl,程序依次将文本框Textl中以空格分隔的每个英文单词取出,若单词属于数字单词,则按解密步骤进行处理,最后在文本框Text2中输出解密结果。
程序运行效果如图所示,请回答下列问题:

(1)若文章内容为“tom bought two apples and five oranges, which cost ten dollars altogether.”,则破译后的密码应为_____________。
(2)请在划线处填入合适的代码。
Dim a(1 To 20) As String
Private Sub Form_Load()
a(1) = "one": a(2) = "two"
'……将所有数字单词按顺序存入数组a中,代码略
End Sub
Private Sub Command1_Click()
Dim s As String, tmp As String
Dim c as Integer,i As Integer, j As Integer, k As Integer, t As String, ch As As String,code As Long
Dim b(1 To 100) As String 'b数组存放数字单词处理后得到的两位数
s = Text1.Text
c = 0: i = 1: flag = True:t = ""
Do While i <= Len(s)
ch = Mid(s, i, 1)
If ch >= "a" And ch <= "z" Then
t = t + ch
flag = False
ElseIf flag = False Then
For j = 1 To 20
If t = a(j) Then
c = c + 1
b(c) =_________________
End If
Next j
t = ""
flag = True
End If
i = i + 1
Loop
’将b数组中的两位数按数值大小进行升序排序,代码略
For i = 1 To c
t = Val(b(i))
_______________________
Next i
Text2.Text = Str(code)
End Sub
Function decode(num As Integer) As String
Dim mo As Integer
mo = num * num Mod 100
If mo = 0 Then
decode = "00"
ElseIf ___________________ Then
decode = "0" + Trim(Str(mo))
Else
decode = Trim(Str(mo)) 'Trim为去除字符串两端空格的函数
End If
End Function
(1)找出文章(以“.”结束)中所有用英文表示的数字(均为小写,数字范围1≤n≤20),单词与数字对应如下:

(2)将这些数字平方后除以100取余,得到两位数如00,04,21,96。
(3)把这些两位数按升序排成一行,组成一个最小的新数,如果新数开头为0,就去除。
(4)步骤(3)找出的最小数即为密码。
小明按照上述方法,设计了一个解密的VB程序,功能如下:单击“解密”按钮Commandl,程序依次将文本框Textl中以空格分隔的每个英文单词取出,若单词属于数字单词,则按解密步骤进行处理,最后在文本框Text2中输出解密结果。
程序运行效果如图所示,请回答下列问题:

(1)若文章内容为“tom bought two apples and five oranges, which cost ten dollars altogether.”,则破译后的密码应为_____________。
(2)请在划线处填入合适的代码。
Dim a(1 To 20) As String
Private Sub Form_Load()
a(1) = "one": a(2) = "two"
'……将所有数字单词按顺序存入数组a中,代码略
End Sub
Private Sub Command1_Click()
Dim s As String, tmp As String
Dim c as Integer,i As Integer, j As Integer, k As Integer, t As String, ch As As String,code As Long
Dim b(1 To 100) As String 'b数组存放数字单词处理后得到的两位数
s = Text1.Text
c = 0: i = 1: flag = True:t = ""
Do While i <= Len(s)
ch = Mid(s, i, 1)
If ch >= "a" And ch <= "z" Then
t = t + ch
flag = False
ElseIf flag = False Then
For j = 1 To 20
If t = a(j) Then
c = c + 1
b(c) =_________________
End If
Next j
t = ""
flag = True
End If
i = i + 1
Loop
’将b数组中的两位数按数值大小进行升序排序,代码略
For i = 1 To c
t = Val(b(i))
_______________________
Next i
Text2.Text = Str(code)
End Sub
Function decode(num As Integer) As String
Dim mo As Integer
mo = num * num Mod 100
If mo = 0 Then
decode = "00"
ElseIf ___________________ Then
decode = "0" + Trim(Str(mo))
Else
decode = Trim(Str(mo)) 'Trim为去除字符串两端空格的函数
End If
End Function