- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
下列Visual Basic表达式的值等于2的是 ( )
A.Abs(-2.1) | B.Int(2.1) | C.Sqr(4.2) | D.Len("4") |
(加试题)由英文字母构成的字符串数据压缩方法描述如下:
1)原始数据中,字母相邻无重复,压缩数据用该字母表示
2)原始数据中,字母相邻重复,压缩数据用1个整数和该字母表示
小明编写了一个解压缩VB程序,功能如下:程序运行时,在文本框Text1中输入压缩数据,点击按钮Command1,在文本框Text2中显示解压缩后的数据。程序运行如图所示

(1)如果压缩数据为”AB168D9A”,解压缩后数据的个数是___________ 。
(2)实现上述功能的VB程序如下。请在划线处填入合适代码。
Function zm(c As String) As Boolean
If c >= "0" And c <= "9" Then zm = False Else zm = True
End Function
Private Sub Command1_Click()
Dim s1 As String, s2 As String, fd As String, k As Integer
Dim count As Integer, i As Integer, j As Integer, length As Integer
s1 = Text1.Text: s2 = "": length = Len(s1)
i = 1
Do While i <= length
fd = Mid(s1, i, 1)
If zm(fd) Then
s2 = s2 + fd
i = i + 1
Else
j = i + 1
fd = Mid(s1, j, 1)
Do While Not zm(fd)
j = j + 1
fd = Mid(s1, j, 1)
Loop
count = ①______
fd = Mid(s1, j, 1)
For k = 1 To count
s2 = s2 + fd
Next k
②_______
End If
Loop
Text2.Text = s2
End Sub
1)原始数据中,字母相邻无重复,压缩数据用该字母表示
2)原始数据中,字母相邻重复,压缩数据用1个整数和该字母表示
原始数据 | 压缩数据 |
BBFFF | 2B3F |
ABBCCCCCD | A2B5CD |
小明编写了一个解压缩VB程序,功能如下:程序运行时,在文本框Text1中输入压缩数据,点击按钮Command1,在文本框Text2中显示解压缩后的数据。程序运行如图所示

(1)如果压缩数据为”AB168D9A”,解压缩后数据的个数是___________ 。
(2)实现上述功能的VB程序如下。请在划线处填入合适代码。
Function zm(c As String) As Boolean
If c >= "0" And c <= "9" Then zm = False Else zm = True
End Function
Private Sub Command1_Click()
Dim s1 As String, s2 As String, fd As String, k As Integer
Dim count As Integer, i As Integer, j As Integer, length As Integer
s1 = Text1.Text: s2 = "": length = Len(s1)
i = 1
Do While i <= length
fd = Mid(s1, i, 1)
If zm(fd) Then
s2 = s2 + fd
i = i + 1
Else
j = i + 1
fd = Mid(s1, j, 1)
Do While Not zm(fd)
j = j + 1
fd = Mid(s1, j, 1)
Loop
count = ①______
fd = Mid(s1, j, 1)
For k = 1 To count
s2 = s2 + fd
Next k
②_______
End If
Loop
Text2.Text = s2
End Sub
(加试题)某算法的VB程序段如下:
For i = 1 To 3
For j = i To 9
If a(j) > a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
End If
Next j
Next i
数组元素a(0)到a(9)的值依次为“25,64,15,40,74,80,27,65,84,53”。若该程序执行后得到的结果是
For i = 1 To 3
For j = i To 9
If a(j) > a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
End If
Next j
Next i
数组元素a(0)到a(9)的值依次为“25,64,15,40,74,80,27,65,84,53”。若该程序执行后得到的结果是
A.64 74 80 40 65 84 53 27 25 15 |
B.64 40 80 74 65 84 53 27 25 15 |
C.64 25 15 40 74 80 27 65 84 53 |
D.84 80 74 65 64 53 40 27 25 15 |
(加试题)下列VB程序的功能是:求得1000以内的所有水仙花数,并在list1中显示。水仙花数是指一个n位数(n)=3),它的每个位上的数字的n次幂之和等于它本身(例如:1^3+5^3+3^3=153)

Private Sub Command1_Click()
List1.clear
Dim a As Integer
For i = 1 To 1000
s = 0
l = Len(Str(i)) - 1
For j = 0 To l - 1
a = 1
s = s + a ^ 3
Next j
If i = s Then
List1.AddItem i
End If
Next i
End Sub
横线处应填写

Private Sub Command1_Click()
List1.clear
Dim a As Integer
For i = 1 To 1000
s = 0
l = Len(Str(i)) - 1
For j = 0 To l - 1
a = 1
s = s + a ^ 3
Next j
If i = s Then
List1.AddItem i
End If
Next i
End Sub
横线处应填写
A.i / 10 ^ j Mod 10 | B.i \ 10 ^ j Mod 10 |
C.i \ 10 ^ (j Mod 10) | D.(i \ 10) ^ j Mod 10 |
(加试题)一个正整数(非素数)可以表示成它的质因子(“1”与其本身除外)的乘积。给出任一个整数N,求出它所有的质因子以及每个因子出现的次数,并显示乘积表达式。例如:整数120=2×2×2×3×5,所以它的质因子是2,3,5,次数分别是3次,1次,1次。
用Visual Basic编写一个程序求质因子,功能如下:在文本框Text1中输入一个数,单击“计算”命令按钮Command1,在列表框中显示该数的质因子及相应的次数,并显示乘积表达式。程序运行时的界面如图所示。

实现上述功能的VB程序如下,但划线处代码有错,请改正:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer '数组a存放该整数的质因子出现的次数
Dim i As Integer, m As Integer, n As Integer, k As Integer, s As String
n = Val(Text1.Text)
m = n
k = Int(Sqr(n))
For i = 2 To k
a(i) = 0
Next i
For i = 2 To k
Do While n Mod i = 0
a(k) = a(k) + 1 '①
n = n \ i
If n = 1 Then s = s + Str(i) + " ×" Else s = s + Str(i): Exit For '②
Loop
Next i
List1.AddItem "质因子" & " " & "次数"
For i = 2 To k
If a(i) <> 0 Then List1.AddItem Str(i) & " " & Str(a(i))
Next i
List1.AddItem Str(m) + "=" + s
End Sub
加框①处应改为:________;加框②处应改为:________。
用Visual Basic编写一个程序求质因子,功能如下:在文本框Text1中输入一个数,单击“计算”命令按钮Command1,在列表框中显示该数的质因子及相应的次数,并显示乘积表达式。程序运行时的界面如图所示。

实现上述功能的VB程序如下,但划线处代码有错,请改正:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer '数组a存放该整数的质因子出现的次数
Dim i As Integer, m As Integer, n As Integer, k As Integer, s As String
n = Val(Text1.Text)
m = n
k = Int(Sqr(n))
For i = 2 To k
a(i) = 0
Next i
For i = 2 To k
Do While n Mod i = 0
a(k) = a(k) + 1 '①
n = n \ i
If n = 1 Then s = s + Str(i) + " ×" Else s = s + Str(i): Exit For '②
Loop
Next i
List1.AddItem "质因子" & " " & "次数"
For i = 2 To k
If a(i) <> 0 Then List1.AddItem Str(i) & " " & Str(a(i))
Next i
List1.AddItem Str(m) + "=" + s
End Sub
加框①处应改为:________;加框②处应改为:________。
(加试题)有以下VB程序段:
For i = 7 To 5 Step -1
k = i
For j = i - 1 To 1 Step -1
If d(j) > d(k) Then k = j
Next j
If k <> i Then
t = d(k): d(k) = d(i): d(i) = t
End If
Next i
数组元素d(1)到d(7)的值依次为“23,80,54,45,6,72,18”,经过该程序段“加工”后,数组元素d(1)到d(7)的值依次为( )
For i = 7 To 5 Step -1
k = i
For j = i - 1 To 1 Step -1
If d(j) > d(k) Then k = j
Next j
If k <> i Then
t = d(k): d(k) = d(i): d(i) = t
End If
Next i
数组元素d(1)到d(7)的值依次为“23,80,54,45,6,72,18”,经过该程序段“加工”后,数组元素d(1)到d(7)的值依次为( )
A.80,72,54,23,45,18,6 | B.80,72,54,45,6,23,18 |
C.23,18,6,45,54,72,80 | D.23,6,45,18,54,72,80 |
(加试题)一个无序整数数组,对它排序,使其前半部分都为奇数有序,后半部分为偶数有序。
基本想法:利用插入排序算法,对奇偶子序列分别插入排序。用两个变量把整个数组分割为三个部分,第一个部分为奇数有序子序列,第二部分为偶数有序子序列,第三部分为未排序子序列。使用两个变量进行分割,mid 指向偶数有序子序列的一个元素,end1 指向未排序子序列(等待一个个插入前面的奇数有序子序列或偶数有序子序列)。

Const n = 7
Dim a(-1 To n) As Integer
Private Sub Form_Load()
'随机生成7个不重复的正整数到a()数组中。代码略
End Sub
Private Sub Command1_Click()
Dim mid As Integer, end1 As Integer
Dim i As Integer, j As Integer, num As Integer
mid = 0: end1 = 0
Do While end1 <= n
num = a(mid) ‘①
j = end1
If num Mod 2 = 1 Then
Do While j - 1 >= mid and a(j - 1) < num ‘②
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = num
mid = mid + 1
Else
Do While a(j - 1) > num And j - 1 >= mid
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = num
End If
end1 = end1 + 1
Loop
For i = 0 To n
List1.AddItem Str(a(i))
Next i
End Sub
划线处的代码有误,请改正:
①___________________________
②___________________________
基本想法:利用插入排序算法,对奇偶子序列分别插入排序。用两个变量把整个数组分割为三个部分,第一个部分为奇数有序子序列,第二部分为偶数有序子序列,第三部分为未排序子序列。使用两个变量进行分割,mid 指向偶数有序子序列的一个元素,end1 指向未排序子序列(等待一个个插入前面的奇数有序子序列或偶数有序子序列)。

Const n = 7
Dim a(-1 To n) As Integer
Private Sub Form_Load()
'随机生成7个不重复的正整数到a()数组中。代码略
End Sub
Private Sub Command1_Click()
Dim mid As Integer, end1 As Integer
Dim i As Integer, j As Integer, num As Integer
mid = 0: end1 = 0
Do While end1 <= n
num = a(mid) ‘①
j = end1
If num Mod 2 = 1 Then
Do While j - 1 >= mid and a(j - 1) < num ‘②
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = num
mid = mid + 1
Else
Do While a(j - 1) > num And j - 1 >= mid
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = num
End If
end1 = end1 + 1
Loop
For i = 0 To n
List1.AddItem Str(a(i))
Next i
End Sub
划线处的代码有误,请改正:
①___________________________
②___________________________