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

若该程序段执行后,在文本框Text1中输入的字符串长度不超过10,文本框Text2中输入的值在0到8范围内(输入输出都不包括双引号本身),下列说法不正确的是( )

若该程序段执行后,在文本框Text1中输入的字符串长度不超过10,文本框Text2中输入的值在0到8范围内(输入输出都不包括双引号本身),下列说法不正确的是( )
A.若在文本框Text1中输入“ZGBG”,Text2中输入“0”,则Text3中显示“ZG,GB,BG” |
B.若在文本框Text1中输入“CCAA”,Text2中输入“1”,则程序运行结束时变量c的值为2 |
C.将数组a的定义语句改为“Dim a(1 To 9) As String”,程序依然能够正确运行 |
D.若a(1)到a(4)的值为“AB”,“AC” ,“BC” ,“AC”,则调用函数check(4)的结果为False |
已知一无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b(1))≤a(b(2)) ≤a(b(3))……≤a(b(n))(示例如下图所示),对这些有序数据可进行对分查找。则第一次查找时,中点位置m与中点值分别是( )


A.m的值是Fix((1+n)/2),中点值是 a(m) |
B.m的值是Fix((1+n)/2),中点值是 a(b(m)) |
C.m的值是Fix((b(1))+b(n))/2),中点值是 a(m) |
D.m的值是Fix((b(1))+b(n))/2),中点值是 a(b(m)) |
(加试题)某对分查找算法的 VB 程序段如下:
Key = val(text1.text)
N=0
i = 1: j = 7
flag = False
Do While i <= j And flag = False
n = n + 1
m = Fix((i + j) / 2)
If a(m) = Key Then flag = True
If Key < a(m) Then i = m + 1 Else j = m – 1
Text2.Text = "在第" & Str(m) & "个,"
Else
Text2.Text = "未找到,"
End If
数组元素 a(1)到 a(7)的值依次为“89,72,68,45,23,19,17”。文本框 Text1 中输入 17,执 行该程序段后,下列变量的值不.正.确.的是( )
Key = val(text1.text)
N=0
i = 1: j = 7
flag = False
Do While i <= j And flag = False
n = n + 1
m = Fix((i + j) / 2)
If a(m) = Key Then flag = True
If Key < a(m) Then i = m + 1 Else j = m – 1
Loop
If flag = True ThenText2.Text = "在第" & Str(m) & "个,"
Else
Text2.Text = "未找到,"
End If
数组元素 a(1)到 a(7)的值依次为“89,72,68,45,23,19,17”。文本框 Text1 中输入 17,执 行该程序段后,下列变量的值不.正.确.的是( )
A.n=2 | B.m=7 | C.i=7 | D.j=6 |
有如下VB程序段:
Dim a(1 To 10) As Integer
Dim i As Integer,j As Integer,key As Single
i=1:j=10:n=0
key=Int (Rnd * 100)
Do While i<=j
Text1.Text=Str(n)
已知数组元素a(1)至a(10)的值依次为91,82,73,64,55,46,37,28,19,5,若执行该程序,文本框Text1中显示的内容不可能是
Dim a(1 To 10) As Integer
Dim i As Integer,j As Integer,key As Single
i=1:j=10:n=0
key=Int (Rnd * 100)
Do While i<=j
m=(i+j)\2
If key <a(m) Then
i=m+1:n=n-1Else
j=m-1:n=n+1End If
LoopText1.Text=Str(n)
已知数组元素a(1)至a(10)的值依次为91,82,73,64,55,46,37,28,19,5,若执行该程序,文本框Text1中显示的内容不可能是
A.4 | B.-4 | C.-2 | D.3 |
(加试题)若数组元素d(1)到d(8)的值依次为“6,9,12,18,20,28,32,45”,查找Key值的VB 程序段如下:
t(1) = 1: t(2) = 1
For i = 3 To 5
i=1:j=8:k=6
Do While i <=j
k=k-1
k=k-2
运行该程序段后,①处的赋值语句共执行( )
t(1) = 1: t(2) = 1
For i = 3 To 5
t(i) = t(i - 1) + t(i -2)
Next i Key =13i=1:j=8:k=6
Do While i <=j
m = i+t(k-1) ‘①
If Key = d ( m ) Then Exit Do ‘Exit Do表示退出循环
If d(m) > Key Then
j= m - 1k=k-1
Else
i = m + 1k=k-2
End If
Loop运行该程序段后,①处的赋值语句共执行( )
A.1次 | B.2次 | C.3次 | D.4次 |
(加试)数组a存放n个学生的学号及成绩,a(2*i-1)存放第i个学生的学号,a(2*i)存放第i个学生的成绩,且成绩按降序排列(i=1,2,……n)。下列VB程序功能为:文本框Text1中输入成绩key,查找该成绩对应学生的学号,在文本框Tex2中显示。
Key = Val(Text1. Text)
i=1:j=( ① )
flag =False
Do While I <=j And Not flag
m=(i+j)\2
If key =a(2*m)Then
Flag = True
Elseif ( ② ) Then
j=m-1
Else
i=m+1
End If
Loop
If flag Then Text2.Text=Str( ③ ) Else Text2.Text=“未找到!”
上述程序段3各方框处的代码分别为
Key = Val(Text1. Text)
i=1:j=( ① )
flag =False
Do While I <=j And Not flag
m=(i+j)\2
If key =a(2*m)Then
Flag = True
Elseif ( ② ) Then
j=m-1
Else
i=m+1
End If
Loop
If flag Then Text2.Text=Str( ③ ) Else Text2.Text=“未找到!”
上述程序段3各方框处的代码分别为
A.(1)2*n (2)key>a(2*m) (3)a(2*m+1) |
B.(1)2*n (2)key<a(2*m) (3)a(2*m+1) |
C.(1)n (2)key>a(2*m) (3)a(2*m-1) |
D.(1)n (2)key <a(2*m) (3) a(2*m-1) |
IPv6 是英文“Internet Protocol Version 6”(互联网协议第 6 版)的缩写。IPv6 地址总共有 128 位,为了便于人工阅读和输入,IPv6 地址使用 16 进制数表示,划分成 8 个块,每块 4 位,块与块之间用“:”隔开,如:ABCD:EF01:0000:0000:ABCD:EF01:0000:6789
同时,对于多个地址块为 0 的情况时,可以使用”::”号,进行化简。
化简原则:
①全 0 块“0000”,可以化简为“0”
②连续多个全 0 块,可以化简为“::”
③一个 IPv6 地址中只能出现一个“::”,出现多个全 0 块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::”
④“::”可以出现在地址开头或结尾具体示例如下:
程序界面如图所示:

实现上述功能的 VB 程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Text1_Change()
Dim a(1 To 8) As String, ipstr As String, ips As String
Dim lenth As Integer, max_lenth As Integer, start As Integer ipstr = Text1.Text
For i = 1 To 8
a(i) =_________'将 IPv6 分段存入数组 a Next i
'对数组进行处理,如果字母或非零数字开头,则不用处理;如果全是数字0,则压缩成 0,如果前导为 0,则去掉,处理完毕存回数组。
'///------ 处理过程略----- /////
'如果只有一串0,则将该串“0”用“::”代替,如果不止一串0,则将最长的一串“0”简化为“::”,如果有连续 0,则将左边的一串零简化,右侧保留。
max_lenth = 0
For i = 1 To 7
If_________Then lenth = lenth + 1
Else
If lenth > max_lenth Then
max_lenth = lenth: start = i - lenth: lenth = 0 End If
End If Next i
If lenth > max_lenth Then max_lenth = lenth: start = i - lenth '根据连续 0 串的位置确定输出简化后的结果
ips = ""
If start = 1 And max_lenth = 7 Then '开头是 0 且全 0 ips = "::"
ElseIf start = 1 Then '开头是 0 但不全为 0 ips = "::"
For i = start + max_lenth + 1 To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
ElseIf start > 1 And start + max_lenth = 8 Then '开头不是 0 但 0 到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
ElseIf start > 1 Then '开头不是 0 且 0 不到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
For i =_________To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
Else '无连续 0 出现
For i = 1 To 7
ips = ips + a(i) + ":"
Next i
ips = ips + a(i) End If
Text2.Text = ips End Sub
(2)IPv6 地址:3BCD:0000:0000:ABCD:0000:0000:0000:6789,则化简后为_______。
同时,对于多个地址块为 0 的情况时,可以使用”::”号,进行化简。
化简原则:
①全 0 块“0000”,可以化简为“0”
②连续多个全 0 块,可以化简为“::”
③一个 IPv6 地址中只能出现一个“::”,出现多个全 0 块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::”
④“::”可以出现在地址开头或结尾具体示例如下:
程序界面如图所示:

实现上述功能的 VB 程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Text1_Change()
Dim a(1 To 8) As String, ipstr As String, ips As String
Dim lenth As Integer, max_lenth As Integer, start As Integer ipstr = Text1.Text
For i = 1 To 8
a(i) =_________'将 IPv6 分段存入数组 a Next i
'对数组进行处理,如果字母或非零数字开头,则不用处理;如果全是数字0,则压缩成 0,如果前导为 0,则去掉,处理完毕存回数组。
'///------ 处理过程略----- /////
'如果只有一串0,则将该串“0”用“::”代替,如果不止一串0,则将最长的一串“0”简化为“::”,如果有连续 0,则将左边的一串零简化,右侧保留。
max_lenth = 0
For i = 1 To 7
If_________Then lenth = lenth + 1
Else
If lenth > max_lenth Then
max_lenth = lenth: start = i - lenth: lenth = 0 End If
End If Next i
If lenth > max_lenth Then max_lenth = lenth: start = i - lenth '根据连续 0 串的位置确定输出简化后的结果
ips = ""
If start = 1 And max_lenth = 7 Then '开头是 0 且全 0 ips = "::"
ElseIf start = 1 Then '开头是 0 但不全为 0 ips = "::"
For i = start + max_lenth + 1 To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
ElseIf start > 1 And start + max_lenth = 8 Then '开头不是 0 但 0 到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
ElseIf start > 1 Then '开头不是 0 且 0 不到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
For i =_________To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
Else '无连续 0 出现
For i = 1 To 7
ips = ips + a(i) + ":"
Next i
ips = ips + a(i) End If
Text2.Text = ips End Sub
(2)IPv6 地址:3BCD:0000:0000:ABCD:0000:0000:0000:6789,则化简后为_______。
小明学了排序和查找算法后,编写了一个处理成绩的程序。单击“获取成绩”按钮得到 n 个非降序数保存在数组 a(1)—a(n)中,并显示在 List1 中。在文本框 Text1 中输入成绩 key,单击“查找”按钮,则在标签 label1 中显示共有多少位同学的成绩大于等于该成绩。

(1)加框 1 处的程序代码有错,应改为____。
(2)请在划线处填入合适代码:
Dim a(1000) As Integer, n As Integer Private Sub Command1_Click()
'从数据库获取 n 个成绩存储在 a(1)---a(n)组中,代码略 For i = 2 To n ‘排序
tmp = a(i) j = 1
Do While tmp > = a(j) j = j + 1
If __________Then Exit Do Loop
For k = i To j + 1 Step -1 a(k) = a(k - 1)
Next k
'改错(1)
Next i
For i = 1 To n List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command2_Click()
Dim key As Integer, i As Integer, j As Integer, m As Integer key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If _________ Then j = m - 1
Else
i = m + 1 End If
Loop
Label1.Caption = "共有" +_________+ "位同学大于等于该成绩。"
End Sub

(1)加框 1 处的程序代码有错,应改为____。
(2)请在划线处填入合适代码:
Dim a(1000) As Integer, n As Integer Private Sub Command1_Click()
'从数据库获取 n 个成绩存储在 a(1)---a(n)组中,代码略 For i = 2 To n ‘排序
tmp = a(i) j = 1
Do While tmp > = a(j) j = j + 1
If __________Then Exit Do Loop
For k = i To j + 1 Step -1 a(k) = a(k - 1)
Next k

Next i
For i = 1 To n List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command2_Click()
Dim key As Integer, i As Integer, j As Integer, m As Integer key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If _________ Then j = m - 1
Else
i = m + 1 End If
Loop
Label1.Caption = "共有" +_________+ "位同学大于等于该成绩。"
End Sub
某对分查找算法的VB程序段如下:
i=1:j=6:flag=False
key=Val(Text1.Text)
Do While i<=j And flag=False
m=(i+j)\2
If key=a(m) Then flag=True
If key<a(m) Then j=m-1 Else i=m+1
Loop
i=1:j=6:flag=False
key=Val(Text1.Text)
Do While i<=j And flag=False
m=(i+j)\2
If key=a(m) Then flag=True
If key<a(m) Then j=m-1 Else i=m+1
Loop
数组元素a(1)到a(6)的值依次为“7,9,15,27,34,51”。文本框Text1中输入“27”后运行该程序,运行结束后,下列说法不正确的是( )
A.变量flag的值为True | B.变量i的值为4 | C.变量j的值为4 | D.变量m的值为4 |
礼品分配问题:某班得到一件精美礼品,由于只有一件礼品,大家决定用下面方法来分配该礼品:n个同学围成一圈,按顺序从1到n进行编号。从第1个人开始报数,报到m的人退出,下一个人继续从1开始报数,报到m的人出圈┈┈,如此依次进行,直到留下的最后一个人得到该礼品。程序运行界面如图所示,单击“开始”按钮,将输出退出圈子的同学编号以及最后获得奖品的编号。

实现上述功能的VB程序如下,请回答下列问题。
(1)当班级总人数n=15,m=5的时候,获得礼品的同学编号是__________(填写数字)。
(2)在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, m As Integer
Dim num As Integer, t As Integer
Dim a(1 To 100) As Boolean
n = Val(Text1.Text)
m =Val(Text2.Text)
For i = 1 To n
_____
Do While t > 1
For i = 1 To n
If a(i) = True Then _____
If num = m Then
_____
t = t -1
num = 0
Text3.Text = Text3.Text +Str(i)
End If
Next i
Loop
For i = 1 To n
If a(i)= TrueThen Label2.Caption = "获得礼品同学编号:" + Str(i)
Next i
End Sub

实现上述功能的VB程序如下,请回答下列问题。
(1)当班级总人数n=15,m=5的时候,获得礼品的同学编号是__________(填写数字)。
(2)在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, m As Integer
Dim num As Integer, t As Integer
Dim a(1 To 100) As Boolean
n = Val(Text1.Text)
m =Val(Text2.Text)
For i = 1 To n
a(i) = True
Next i_____
Do While t > 1
For i = 1 To n
If a(i) = True Then _____
If num = m Then
_____
t = t -1
num = 0
Text3.Text = Text3.Text +Str(i)
End If
Next i
Loop
For i = 1 To n
If a(i)= TrueThen Label2.Caption = "获得礼品同学编号:" + Str(i)
Next i
End Sub