- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- + 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用

有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:
(1)A、B都是不大于1000的正整数,若数值非零,则最高位不能是0
(2)摆放“+”与“=”各使用两根火柴棒
(3)A+B=C 与 B+A=C 视为相同的等式
(4)n根火柴棒必须全部用上
小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。
(1)请在划线处填入合适的代码。①__________,②__________,③________;
(2)某次运行程序时,显示的等式中包含“7+17=24”,根据程序分析,输入的n的值为:______。
Dim sz(0 To 9) As Integer ’数组元素sz(i)用于存储数字i所使用的火柴棒的数量
Private Sub Form_Load()
sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4
sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6
End Sub
‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量
Function hcs(ByVal x As Integer) As Integer
Dim s As Integer,k as integer
s = 0
Do While ①
k = x Mod 10
s=s+sz(k)
x = x \ 10
Loop
hcs = s + sz(x)
End Function
Private Sub Command1_Click()
Dim n As Integer
Dim a As Integer, b As Integer, c As Integer
n = Val(Text1.Text)
ans = 0
List1.Clear
For a = 0 To 999
For b = ② To 999
c = a + b
If ③ Then
List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))
ans = ans + 1
End If
Next b
Next a
List1.AddItem ("共有" + Str(ans) + "种等式")
End Sub
(1) 我们可以用_____算法来完成本题。
(2) 假设我们通过某一方法得到一个三位数X各位数字之和为S,如何判断S是9的倍数?写出VB语言的关系表达式______________
(3) 用VB语言完成本题。__________
(加试题)小李同学碰到了一个数学问题:400个同学按顺序进行编号后围成一个大圈,按1至2报数(从1号位置开始),报到2的同学出列,以此一直循环报数下去,问最后剩下的那位同学他的编号是几号?
例如以6个同学编号为例,按1至2报数(从1号位置开始)依次出列的编号次序为2-4-6-3-1-5,那么最后剩下的就是编号为5的同学。
为了解决这个问题,小李用VB编写了如下程序尝试解决,其中列表list1显示出列的顺序编号,文本框text1中显示最后留下的编号,程序代码如下(测试界面如下图):
Dim s, f, t As Integer
Dim a(1 To 400) As Boolean
For i = 1 To 400
a(i) = False
Next i
s = 0
f = 0
i = 0
Do While f < 399
i = i + 1
If i = 401 Then i = (1)
If a(i) = False Then s = s + 1
If s = 2 Then
(2)
List1.AddItem Str(i)
a(i) = True
f = (3)
End If
Loop
For i = 1 To 400
If (4) Then text1.text=str(i)
Next i
End Sub
为实现程序功能,在程序划线处应填入的代码为:
(1) _________________
(2) _________________
(3) _________________
(4) _________________


程序代码如下:
Private Sub Command1_Click()
Dim i As Integer
List1.Clear '清除列表框内容
For i = 3 To 97 ___①___
If judge(i) And ②____ Then
List1.AddItem Str(i) + " 和 " + Str(i + 2)
End If
Next i
End Sub
Function judge(x As Integer) As Boolean
Dim j As Integer
judge = True
For j = 2 To Int(Sqr(x))
If x Mod j = 0 Then
judge = false
Exit For
End If
Next j
End Function
将加框部分转换为Do While条件循环结构,部分代码如下:
Private Sub Command1_Click()
Dim i As Integer
i = 3
Do While i <= 97
'循环内语句块与加框处循环内语句块相同
③________
Loop
End Sub
随机产生15个A-J的大写字母,按字母降序排序后,将连续出现的字母用压缩的形式显示。例如,连续5个H字母显示为5*H,如图所示,请在划线处填入合适代码。
Sub command1_Click( )Const N = 14
Dim a(1 to n) As Char, c As Char ‘数组a用于存储随机产生字母
Dim count, i, k, j as integer
Label1.caption = ""
For i = 0 To N
a(i) = ________
Label1.caption = a(i) & " "
Next i
For i = 0 To N - 1
k = i
For j = i + 1 To N
If a(j) > a(k) Then_________
Next j
c = a(i) : ___________: a(k) = c
Next i
For i = 0 To N '输出排序的结果
Label1.caption = a(i) & " "
Next i
i = 0
Do While i <= N '压缩显示相同元素
count = 1
If i < N Then j = i + 1
Do While a(i) = a(j)
If i <> j Then count = ____________
If j < N Then j = j + 1 Else Exit Do
Loop
If count = 1 Then
Label1.caption = a(i) & " "
Else
Label1.caption = ___________
End If
i = i + count
Loop
End Sub
(加试题)n个数从小到大选择排序需要经过n-1遍加工,每遍加工从未排序的数据元素中找出最小的元素与当前元素进行交换。小天同学学习了选择排序算法和函数的知识后,编写了一个VB程序,功能如下:运行程序时首先在列表框List1中显示10个不小于10且不大于99的随机自然数,单击“排序”按钮Command1后,在列表框List2中显示这些数据按从小到大排序后的结果,运行结果如图所示。

实现上述功能的VB代码如下,但划线处有错,请改正。
Dim a(1 To 10) As Integer '定义数组a
Private Sub Form_Load()
Randomize
For i = 1 To 10 '产生10个不小于10且不大于99的随机自然数,并依次存放在数组a中
a(i) = Int(Rnd * 100) '①
List1.AddItem Str(a(i))
Next i
End Sub
'Find_min函数寻找与当前元素a(x)需要交换的数组元素下标
Function Find_min(x As Integer)
Dim k As Integer, j As Integer
k = x
For j = x + 1 To 10
If a(j) < a(k) Then k = j
Next j
Find_min = k
End Function
Private Sub Command1_Click()
Dim i As Integer, k As Integer, t As Integer
For i = 1 To 9
k = Find_min(i+1) '②
If k <> i Then
t = a(i): a(i) = a(k): a(k) = t
End If
Next i
For i = 1 To 10
List2.AddItem Str(a(i))
Next i
End Sub
(1)加框处①有错,应改为__________________________。
(2)加框处②有错,应改为__________________________。
编写一个VB程序,功能如下:在文本框Text1中输入十六进制数(取值范围21至7E), 单击按钮Command1进行转换,并将其对应的ASCII字符显示在文本框Text2中。程序运行界面如图所示。
(1)在设计程序界面时,要使按钮Command1上显示的文本为“转换”,应修改该按钮的______________属性。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, d As Integer

Dim ch As String, h As String
d = 0
___________
For i = 1 To Len(h)
ch = Mid(h, i, 1)
If ch >= "A" And ch <= "F" Then
n = Asc(ch) - Asc("A") + 10
Else
n = ____________
End If
d = d + n * 16 ^ (Len(h) - i)
Next i
Text2.Text = Chr(d)
End Sub
(3)运行该程序,在文本框Text1中输入3F,单击“转换”按钮,则变量d的值是_______。
数字频率统计:小王编写 VB 程序,实现如下功能:在文本框中输入一串任意字符串(含数字),单击“统计”按钮 Command1,在列表框 List1 中统计并输出数字 0~9 出现的次数。运行界面如图所示,VB 程序代码如下。

(1)根据代码可知,文本框对象的名称为________________________。
(2)为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(0 To 9) As Integer, s As String Dim k As String, i As Integer
s = Tabc.Text
List1.Clear
For i = 1 To Len(s)
_____①
If k >= "0" And k <= "9" Then
_____②
S=k+s
End If
Next i
For i = 0 To 9
List1.AddItem Str(i) & "出现了:" & a(i) & "次"
Next i
End Sub
(3)如果输入的是“hello 8102!” ,执行完以上程序后,变量S的值为________


图1 图2
(1)在设计程序界面时,应使用图2所示“控件工具箱”中的________(填写相应编号)添加“生成”按钮。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer, a As Integer, b As Integer
Randomize
n = Val(Text1.Text)
i = ________
Do While i <= n
a = Int(Rnd * 100)
b = Int(Rnd * 100)
If _____ Then
List1.AddItem "(" + Str(i) + ")" + Str(a) + "+" + Str(b) + "="
i = i + 1
End If
Loop
End Sub(3)运行该程序,在文本框中输入5,单击“生成”按钮后,对语句a = Int(Rnd * 100)执行次数的描述,最合理的是________(单选,填字母:
A.执行次数等于5 / | B.执行次数大于等于5 / | C.执行次数小于等于5) |
s=Text1.Text
s1=" "
For i=1 To Len(s)
c=Mid(s, i, 1)
If c>="A" And c<="Z" Then
c=Chr(Asc(c)+32) '大写字母转化为小写字母
End if
s1=s1+c
Next i
Text2.Text=s1
在文本框Textl中输入"ABcd12XY ",执行上述程序段后,文本框Textl显示的内容是( )
A.abcd12XY | B.abcd12xy | C.ABCD12XY | D.ABcd12xy |