编写一个删除数字字符串s中的最大和次大数字字符的程序。具体功能如下:在文本框Text1中输入一个数字字符串,单击“删数”按钮Command1,将删除后的结果显示在文本框Text2中。程序运行界面如下图所示。

(1)要使程序运行时,按钮Command1上显示的标题为“删数”,可在Form_Load事件处理过程中添加语句________(单选,填字母:
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String, ch As String
Dim i As Integer, n As Integer
Dim max1 As Integer, max2 As Integer
s = Text1.Text: n = Len(Text1.Text)
If Mid(s, 1, 1) > Mid(s, 2, 1) Then
max1 = 1: max2 = 2
Else
max1 = 2: max2 = 1
End If
For i = 3 To n
ch = Mid(s, i, 1)
If ch > Mid(s, max1, 1) Then
①_______
max1 = i
ElseIf ch >= Mid(s, max2, 1) Then
max2 = i
End If
Next i
For i = 1 To n
If ②_________ Then Text2.Text = Text2.Text & Mid(s, i, 1)
Next i
End Sub
(3)若在文本框Text1中输入的内容为“82176736”,单击按钮Command1,文本框Text2中显示的内容是________。

(1)要使程序运行时,按钮Command1上显示的标题为“删数”,可在Form_Load事件处理过程中添加语句________(单选,填字母:
A.Caption.Command1 ="删数" / | B.Command1.Caption ="删数" / | C.Caption ="删数"/) |
Private Sub Command1_Click()
Dim s As String, ch As String
Dim i As Integer, n As Integer
Dim max1 As Integer, max2 As Integer
s = Text1.Text: n = Len(Text1.Text)
If Mid(s, 1, 1) > Mid(s, 2, 1) Then
max1 = 1: max2 = 2
Else
max1 = 2: max2 = 1
End If
For i = 3 To n
ch = Mid(s, i, 1)
If ch > Mid(s, max1, 1) Then
①_______
max1 = i
ElseIf ch >= Mid(s, max2, 1) Then
max2 = i
End If
Next i
For i = 1 To n
If ②_________ Then Text2.Text = Text2.Text & Mid(s, i, 1)
Next i
End Sub
(3)若在文本框Text1中输入的内容为“82176736”,单击按钮Command1,文本框Text2中显示的内容是________。
(加试题)已知一无序数组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
最大回文子串。回文字符串是具有回文特性的字符串:即该字符串从左向右读, 与从右向左读都一样.如:凤落梧桐梧落凤,abcba 等。“最大回文子串”是指一个字符串中长度最大的回文字符串,其基本算法思想如下:
(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
(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程序段如下:
i = 1: j = 8: c = 0
Do While i <= j
c = c + 1
m = Fix((i + j) / 2)
If key = b(m) Then Exit Do 'Exit Do表示退出循环
If key < b(m) Then j = m - 1 Else i = m + 1
Loop
数组元素b(1)到b(8)的值依次为 “22,32,39,48,71,82,96,106”。若该程序段运行结束后,c的值为2,则key的值是
i = 1: j = 8: c = 0
Do While i <= j
c = c + 1
m = Fix((i + j) / 2)
If key = b(m) Then Exit Do 'Exit Do表示退出循环
If key < b(m) Then j = m - 1 Else i = m + 1
Loop
数组元素b(1)到b(8)的值依次为 “22,32,39,48,71,82,96,106”。若该程序段运行结束后,c的值为2,则key的值是
A.48或32 | B.48或96 | C.32或82 | D.82或96 |
编写“数字提取”程序,实现如下功能:在文本框 Text1 中输入包含数字和其他非数字字 符混合的原始数据,点击“数字提取”按钮 Command1,将数据中的数字以“,”间隔输出到文本 框 Text2 中。程序运行界面如图所示,VB 代码如下。请回答以下问题:
(1)要使程序运行后,窗体 Form1 标题立即自动显示为“数字提取”,可在 (单选,填字 母:
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。 Private Sub Command1_Click()
Dim s As String, ch As String, flag As Boolean
Dim tmp As String, ans As String
s = Text1.Text
s = s + "."
tmp = "": ans = ""
flag = False
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "0" And ch <= "9" Then
tmp = ①
flag = True
ElseIf flag = True Then
ans = ans + tmp + ","
②
flag = False
End If
Next i
Text2.Text = ans End Sub
(3)如图,若删除程序中的语句“s = s + "."”,输入不变,则提取后的数字信息为 。

(1)要使程序运行后,窗体 Form1 标题立即自动显示为“数字提取”,可在 (单选,填字 母:
A.Form_Load / | B.Form_Click/ | C.Command1_Click)事件过程中添加语句 Form1.Caption="数字 提取"。 |
Dim s As String, ch As String, flag As Boolean
Dim tmp As String, ans As String
s = Text1.Text
s = s + "."
tmp = "": ans = ""
flag = False
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "0" And ch <= "9" Then
tmp = ①
flag = True
ElseIf flag = True Then
ans = ans + tmp + ","
②
flag = False
End If
Next i
Text2.Text = ans End Sub
(3)如图,若删除程序中的语句“s = s + "."”,输入不变,则提取后的数字信息为 。
某对分查找算法的VB程序段如下:
i = 1: j = 7: n = 0: f = False
Key = Val(Text1.Text)
Do While i <= j And f = False
n = n + 1
m = Fix((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(7)的值依次为“2,19,29,34,43,52,66,68”。文本框Textl中输入“46”后运行该程序,运行结束后下列说法不正确的是
i = 1: j = 7: n = 0: f = False
Key = Val(Text1.Text)
Do While i <= j And f = False
n = n + 1
m = Fix((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(7)的值依次为“2,19,29,34,43,52,66,68”。文本框Textl中输入“46”后运行该程序,运行结束后下列说法不正确的是
A.变量f的值为False | B.变量m的值为5 | C.变量j的值为4 | D.变量n的值为3 |
(加试题)有一组数据分别为“8,11,17,25,29,30,31,46”用对分查找和顺序查找数据 31 的过程中,两种 方法都能访问到的数字是( )
A.11 |
B.17 |
C.29 |
D.30 |
(加试题)给定m个区间和1个数组(有n个元素),现要求根据各区间限定的取值范围,将数组依次分隔成m+1个段。具体分割方法如下:

(1)给定2个区间依次为[10,50]、[30,80],数组各元素为“12,44,34,45,66,50,45,70”,则第1段“重叠块”中的元素个数为_________个。
(2)小李根据上述描述,设计了一个统计各段“非重叠块”、“重叠块”和剩余段中元素个数的算法。算
法的VB程序如下,请在划线处填入合适的代码。
Const n = 18, m = 6
Dim a(1 To n) As Integer
Dim b(1 To 2 * m) As Integer
'b(1)、b(2)为第1区间的下限和上限, b(3)、b(4)为第2区间的下限和上限,…
Dim c(1 To 2 * m + 1) As Integer
'数组c用于保存统计结果:
'c(1)、c(2)分别存储第1段“非重叠块”和“重叠块”的元素个数,
'c(3)、c(4)分别存储第2段“非重叠块”和“重叠块”的元素个数,…
'c(2m-1)存储第m段"非重叠块"元素个数,c(2m)存储第m段"重叠块"元素个数(值为0)
'c(2m+1)存储剩余段元素个数
Private Sub Command1_Click()
Dim i As Integer, p As Integer, L As Integer, LL As Integer
'读取n个数据并保存在数组a中,代码略
'读取m个区间的下限和上限并保存在数组b中,代码略
For i = 1 To 2 * m + 1
c(i) = 0
Next i
i = 1: p = 1
L = 0: LL = 0
Do While _________________
If IsIn(i, p) Then
If IsIn(i, p + 1) Then
LL = LL + 1
Else
______________
LL = 0
End If
i = i + 1
Else
c(2 * p - 1) = L
c(2 * p) = LL
L = 0: LL = 0
p = p + 1
End If
Loop
If i <= n Then
c(2 * p - 1) = n - i + 1
Else
'输出统计结果,代码略
End Sub
'函数IsIn用来判断a(i)值是否属于第p区间
Function IsIn(i As Integer, p As Integer) As Boolean
If p > m Then
IsIn = False
Else
If ____________________________ Then IsIn = True Else IsIn = False
End If
End Function
第1段是从数组首个元素开始、元素值都属于第1区间的最长连续元素段。如果首个元素不属于第1区间,则第1段元素个数为0;
第1段分割后的剩余元素,用同样的方法来依次分割第2段、第3段、…、第m段;
第m段分割后的剩余元素分割到第m+1段(剩余段)。若第p(1≤p≤m-1)段末尾连续元素的值也同时属于第p+1区间,则这块连续元素称为第p段“重叠块”,该段其余部分称为第p段“非重叠块”。由于不存在第m+1区间,这里特别规定:第m段的全部元素都分割到m段“非重叠块”,第m段“重叠块”的元素个数为0,一个数组分段示例如下图。图中数组第1个元素10不属于第1区间[0,5],因此第1段的元素个数为0。10和20属于第2区间,而33不属于第2区间,因此第2段只包含10和20两个元素。第3段末尾连续3个元素的值也同时属于第4区间,因此,第3段“非重叠块”包含33,58,46,第3段“重叠块”包含55,62,69。

(1)给定2个区间依次为[10,50]、[30,80],数组各元素为“12,44,34,45,66,50,45,70”,则第1段“重叠块”中的元素个数为_________个。
(2)小李根据上述描述,设计了一个统计各段“非重叠块”、“重叠块”和剩余段中元素个数的算法。算
法的VB程序如下,请在划线处填入合适的代码。
Const n = 18, m = 6
Dim a(1 To n) As Integer
Dim b(1 To 2 * m) As Integer
'b(1)、b(2)为第1区间的下限和上限, b(3)、b(4)为第2区间的下限和上限,…
Dim c(1 To 2 * m + 1) As Integer
'数组c用于保存统计结果:
'c(1)、c(2)分别存储第1段“非重叠块”和“重叠块”的元素个数,
'c(3)、c(4)分别存储第2段“非重叠块”和“重叠块”的元素个数,…
'c(2m-1)存储第m段"非重叠块"元素个数,c(2m)存储第m段"重叠块"元素个数(值为0)
'c(2m+1)存储剩余段元素个数
Private Sub Command1_Click()
Dim i As Integer, p As Integer, L As Integer, LL As Integer
'读取n个数据并保存在数组a中,代码略
'读取m个区间的下限和上限并保存在数组b中,代码略
For i = 1 To 2 * m + 1
c(i) = 0
Next i
i = 1: p = 1
L = 0: LL = 0
Do While _________________
If IsIn(i, p) Then
If IsIn(i, p + 1) Then
LL = LL + 1
Else
______________
LL = 0
End If
i = i + 1
Else
c(2 * p - 1) = L
c(2 * p) = LL
L = 0: LL = 0
p = p + 1
End If
Loop
If i <= n Then
c(2 * p - 1) = n - i + 1
Else
c(2 * p - 1) = L
c(2 * p) = LL
End If'输出统计结果,代码略
End Sub
'函数IsIn用来判断a(i)值是否属于第p区间
Function IsIn(i As Integer, p As Integer) As Boolean
If p > m Then
IsIn = False
Else
If ____________________________ Then IsIn = True Else IsIn = False
End If
End Function
(加试题)有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:
i = 1 :j = n
Do While i + 1 < j


Label1.Caption="相邻两个元素的最大差值是" + Str(a(j) - a(i))
上述程序段两个方框处的语句分别为( )
i = 1 :j = n
Do While i + 1 < j
m = (i + j) \ 2
If a(m + 1) - a(m) > a(m) - a(m - 1) Then

Else

End if
LoopLabel1.Caption="相邻两个元素的最大差值是" + Str(a(j) - a(i))
上述程序段两个方框处的语句分别为( )
A.① i = m ② j = m | B.① i = m ② j = m - 1 |
C.① i = m + 1 ② j = m – 1 | D.① i = m + 1 ② j = m |