- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)小明编写了一个VB程序,功能如下:在文本框Text1中输入一段英文,并在文本框Text2中输入英文段落中的某个单词(或字符串),单击“最大间距”按钮(Command1)后,在文本框Text3中显示该单词在文中某两次出现的最大间距,若只出现一次或不出现则显示值为0。程序运行界面如下图所示:

实现上述功能的VB程序如下:
Private Sub Command1_Click()
Dim a(1 To 1000) As String '数组a存储文中出现该指定单词(或字符串)的各个位置
Dim s As String, c As String ,ch As String
Dim n As Integer, max As Integer, i As Integer
s = Text1.Text
c = Text2.Text
n = 0: Max = 0
For i = 1 To Len(s) - Len(c) + 1
ch = ①
If ch = c Then
n = n + 1
a(n) = i
If n >= 2 Then
If a(n) - a(n - 1) - Len(c) > Max Then Max = a(n) - a(n - 1) - Len(c)
End If
End If
Next i
Text3.Text = ②
End Sub
以上程序段运行时,为了实现上述功能,划线处①和②应填入的代码分别为:
(1)_______________________________; (2)_______________________________
(1)每个回文都有一个“中心”,当回文字符数为奇数时,中间的那个字符就是回文中心;但是当回文的字符数为偶数时,回文的中心是最中间的那两个字符,且这两个字符相同。
(2)对任意一个字符或者相同的两个连续字符,我们都可以假设它为回文的“中心”,向它的左右两边扩展出尽可能长的回文。对于每种假设,我们都能得到一个回文,而最长回文必定由其中的某个假设中得到。
现编写一个 VB 程序,在 Text1 中输入一串字符,单击“统计”按钮,在 Text2 中显示该字符串中的最大的回文子串(长度相同时,输出最左边的子串)。运行界面如图所示。

请回答下列问题:
(1)当 Text1 中输入“123321344332423112113123”时,则输出的结果为 。
(2)请在划线处填入合适的代码。
Dim n As Integer
Dim a(0 To 100) As String
Private Sub Command1_Click()
Dim s As String
Dim left As Integer, right As Integer, i As Integer
Dim max As Integer, m As Integer, b1 As Integer
'变量 b1 用于记录回文子串的左端起点
Text2.Text = " "
s = Text1.Text
n = Len(s)
For i = 1 To n
a(i) = Mid(s, i, 1)
Next i
max = 0: left = 0: right = 0
For i = 1 To n
left = i
right = i
m = longest(left, right)
If m > max Then
________①_________
max = m
End If
left = i
right = i + 1
If a(left) = a(right) Then
m = longest(left, right) + 1
If m > max Then
b1 = i - m \ 2 + 1
max = m
End If
End If
Next i
For i = b1 To _____②________
Text2.Text = Text2.Text + a(i)
Next i
End Sub
Function longest(left As Integer, right As Integer) As Integer
Dim p As Integer
p = 1
Do While left > 1 And right < n And _________③______________
left = left - 1
right = right + 1
p = p + 2
Loop
longest = p
End Function

实现上述功能的VB程序代码如下,但是有两个地方有误,请改正。
Dim a(1 To 15) As Integer
Dim i, j As Integer
Const n=10
Private Sub Form_Load()
Randomize '随机生成n个1到100之间的正整数
For i = 1 To n
a(i) = Int(Rnd * 100) + 1
Next i
'将10个数从小到大排序
For i = 1 To n-1
k = i
For j = i + 1 To n
If a(k) < a(j) Then k = j ‘(1)
Next j
If i <> k Then
t = a(i): a(i) = a(k): a(k) = tEnd If
Next i
'将排好序的数输出在列表框Listl中
List1.Clear
For i = 1 To n
List1.AddItem Str(a(i))
Next i
End SubPrivate Sub Command1_Click()
Dim key As Integer
key = Val(Text1.Text)
i = 1
Do While key > a(i) And (i <= n)
i = i + 1
Loop
Label4.Caption = "该数插入的位置是:" + Str(i)
If i = 11 Then
a(i) = keyElse
For j = n+1 To i + 1 Step -1a(j-1) = a(j+1) ‘(2)
Next j
a(i) = key
End If
List2.Clear
For i = 1 To 11
List2.AddItem a(i)
Next i
End Sub
(1)在设计程序界面时,要将文本框Text1中的内容清空,应修改该文本框的 属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Const n = 8
Dim s As String
Dim a As Integer, i As Integer
Dim x As Boolean, y As Boolean, z As Boolean
x = False
y = False
z = False
Randomize
Do While ①
s = ""
For i = 1 To n
a = Int(Rnd() * 62) + 1
If a <= 10 Then
x = True
s = s + Chr(a + Asc("0") - 1)
ElseIf a <= 36 Then
y = True
s = s + Chr(a + Asc("A") - 11)
Else
z = True
②
End If
Next i
Loop
Text1.Text = ③
End Sub
For i = 1 To 3
For j = 5 To i Step -1
If a(j) < a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
List1.AddItem Str(a(i)) Next i
数组元素 a(1)到 a(6)的数据依次为“1,5,7,6,9,3”,经过该程序段加工后,列表框 list1 中显示的内容是( )
A.9 7 6 | B.1 3 5 | C.9 7 6 1 5 3 | D.9 7 6 5 3 1 |

图 a 图 b
(1)当 n=6,原始数据为“8 39 24 5 71 25”,此时极大值有: 。
(2)请在划线处填入合适的代码。 Const n = 10
Dim a(1 To n) As Integer '存储原始数据 Dim Max(1 To n) As Integer '存储极大值数据
Private Sub Form_Load() '原始数据初始化
Randomize
For i = 1 To n
a(i) = ① '产生[1,99]间随机整数
List1.AddItem Str(a(i))
Next i End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim count As Integer, Maxa As Integer
count = 0
List2.Clear
For i = 2 To n - 1 '统计极大值,左右两边端点值除外
If ② Then
count = count + 1
③ = a(i)
End If
Next i
Maxa = 0
For i = 1 To count
List2.AddItem Str(Max(i))
If Maxa < Max(i) Then
Maxa = Max(i)
End If
Next i
Label1.Caption = "极大值中的最大值为:" + Str(Maxa) End Sub
s = 0
For i = 1 To 10
s = s + i Mod 2
Next i
Label1.Caption = Str(s) &“-”& str(i) 该程序段运行后,在标签 Label1 上显示的是( )。
A.5-10 | B.5-11 | C.55-10 | D.1-11 |

问题:实现上述功能的 VB 代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim n as long , sum as long , i As Long Dim x as long , y as long
List1.Clear
n = Val(Text1.Text) sum = 0
For i = 10 To n

y = 0
Do While x > 0

x = x \ 10
Loop
If y = i Then
List1.additem Str(i)
sum = sum+1
End if Next i
Label1.caption = “共有”& Str(sum) & “个回文数” End Sub

A.log(x)/(a+b) | B.log(x)/a+b |
C.ln(x)/(a+b) | D.ln(x)/a+b |