- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- + 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
在以下数组a中,采用对分查找思想查找数据"all",则以下说法正确的是( )。
a(1) | a(2) | a(3) | a(4) | a(5) | a(6) | a(7) |
all | bro | car | due | eve | fre | geo |
A.只需查找1次就能找到数据"all" |
B.第2次查找的范围是a(1)——a(4) |
C.查找过程中依次被访问到的数据是"due"、"bro"、"all" |
D.该数组中存放的都是字符型数据,无法使用对分查找 |
(加试题)使用VB程序研究“回文素数在素数表中的位置”,程序运行界面如下图所示。程序将10000以内的全部素数按顺序保存到数组a中,在文本框中输入需要查找的回文数,单击“查找”按钮command1,在标签label1中显示该回文素数在全部素数中的位置。

实现上述功能的程序如下,加框处的代码有错,请改正。
Dim a(1 To 10000) As Integer
Dim n As Integer
Private Sub Form_Load()
‘将1000以内的素数从小到大依次存入数组a中
‘将素数的个数存入变量n中
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, mid As Integer
Dim key As Integer, flag As Boolean
key = Val(Text1.Text)
If key > 10000 Or Not hws(key) Then
MsgBox "输入的数据不是10000以内的回文数"
Else
i = 1 : j = n
flag = False
Do While flag = False
mid = (i + j) \ 2
If key > a(mid) Then
i = mid + 1
ElseIf key < a(mid) Then
j = mid - 1
Else
flag = True
End If
Loop
If Not flag Then
Label1.Caption = "该回文数不是素数"
Else
Label1.Caption = "回文素数" + Str(key) + "是第" + Str(mid) + "个素数"
End If
End If
End Sub
‘自定义函数 hws(y)用于判断y是否是回文数
Function hws(y As Integer) As Boolean
Dim x As Integer, k As Integer
x = 0: k = y
hws = True
Do While k > 0
x = x + k Mod 10
k = k \ 10
Loop
If x <> y Then hws = False
End Function

实现上述功能的程序如下,加框处的代码有错,请改正。
Dim a(1 To 10000) As Integer
Dim n As Integer
Private Sub Form_Load()
‘将1000以内的素数从小到大依次存入数组a中
‘将素数的个数存入变量n中
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, mid As Integer
Dim key As Integer, flag As Boolean
key = Val(Text1.Text)
If key > 10000 Or Not hws(key) Then
MsgBox "输入的数据不是10000以内的回文数"
Else
i = 1 : j = n
flag = False
Do While flag = False
mid = (i + j) \ 2
If key > a(mid) Then
i = mid + 1
ElseIf key < a(mid) Then
j = mid - 1
Else
flag = True
End If
Loop
If Not flag Then
Label1.Caption = "该回文数不是素数"
Else
Label1.Caption = "回文素数" + Str(key) + "是第" + Str(mid) + "个素数"
End If
End If
End Sub
‘自定义函数 hws(y)用于判断y是否是回文数
Function hws(y As Integer) As Boolean
Dim x As Integer, k As Integer
x = 0: k = y
hws = True
Do While k > 0
x = x + k Mod 10
k = k \ 10
Loop
If x <> y Then hws = False
End Function
小李编写了一个 VB 程序,读取某数据库中的数据,数据表打开后界面及部分VB代码如下:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim a(1 to 1000) as string,strconn as string
strconn="provider=Microsoft.AC
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim a(1 to 1000) as string,strconn as string
strconn="provider=Microsoft.AC
A.OLEDB.12.0;data source ="+ App.Path+"\score.accdb" conn.ConnectionString =strconn Conn.Open Set rs.ActiveConnection = conn rs.Open "Select * from stuinfo" ![]() Do While Not rs.EOF n=n+1 a(n)=rs.fields(1) rs.MoveNext Loop rs.Close conn.Colse 下列对于以上代码的理解正确的有 ( ) ① 连接的数据库文件名是“score.accdb” ② “ConnectionString“是 conn 对象的属性值 ③ 查询的数据表名称是“stuinfo” ④ 程序运行后,a(1)=”101” ⑤ 程序运行后,读取的记录总数共n条 | ||
B.①②③ B.①③④ | C.①③⑤ | D.②④⑤ |
数组d中的数据存放情况如下表,以下流程图的功能是( ) 。


d(1) | d(2) | d(3) | d(4) | d(5) | d(6) |
15 | 10 | 33 | 11 | 71 | 9 |
A.在数组d中顺序查找10,找遍所有数据后,若找到输出”Y”,若没找到则输出”N”。 |
B.在数组d中顺序查找10,一旦找到则结束查找并输出”Y”;若找遍所有数据后仍没找到则输出”N”。 |
C.在数组d中顺序查找10,一旦找到则输出其存储位置 |
D.在数组d中顺序查找、统计10的个数并输出 |
(加试题) 数组 a 中依次存放 6 个有序数据“ 23 33 44 55 66 77”。
Dim a(1 To 10) As Integer
Dim s As String, n, key As Integer
a(1) = 23: a(2) = 33: a(3) = 44: a(4) = 55: a(5) = 66: a(6) = 77
i = 1: j = 6: c = 0: key = 35
Do While i <= j
c = c + 1
m = (i + j) \ 2
If (j - i + 1) Mod 2 = 0 Then m = m + 1
If a(m) = key Then Exit Do
If key < a(m) Then j = m - 1 Else i = m + 1
Loop
该程序段运行后,下列各变量的值不正确的是:
Dim a(1 To 10) As Integer
Dim s As String, n, key As Integer
a(1) = 23: a(2) = 33: a(3) = 44: a(4) = 55: a(5) = 66: a(6) = 77
i = 1: j = 6: c = 0: key = 35
Do While i <= j
c = c + 1
m = (i + j) \ 2
If (j - i + 1) Mod 2 = 0 Then m = m + 1
If a(m) = key Then Exit Do
If key < a(m) Then j = m - 1 Else i = m + 1
Loop
该程序段运行后,下列各变量的值不正确的是:
A.i=3 | B.j=2 | C.c=3 | D.m=2 |
(加试题)小王编写了一个猜价格的VB程序,程序界面如图所示。程序运行时,在列表框List1中显示20个随机生成的在[150,250]之间的价格及其序号。在文本框Text1中输入报价,单击Command1 “猜测”按钮后,在Label3中输出猜中价格对应的序号。

实现上述功能的VB程序如下,但加框处代码有误,请改正。
Dim d(1 To 20) As Integer
Private Sub Form_Load()
For i = 1 To 20 '生成20个随机价格
d(i)=Int(Rnd*100)+150 ‘(1)________
Next i
For i = 1 To 19
For j = 20 To i + 1 Step -1
If d(j) < d(j - 1) Then
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
For i = 1 To 20
End Sub
Private Sub Command1_Click()
Dim baojia As Integer,i as integer, j as integer, t as integer , m as integer
Randomize
List1.Clear
baojia = Val(Text1.Text)
i = 1
j = 20
Do While i<= j
m=(i+j)/2 ‘(2)________
If baojia = d(m) Then
Label3.Caption = "猜中 第" + Str(i) + "个"
Exit Do
ElseIf baojia<d(m) Then
j = m - 1
Else
i=m-1 ‘(3)________
End If
Loop
End Sub

实现上述功能的VB程序如下,但加框处代码有误,请改正。
Dim d(1 To 20) As Integer
Private Sub Form_Load()
For i = 1 To 20 '生成20个随机价格
d(i)=Int(Rnd*100)+150 ‘(1)________
Next i
For i = 1 To 19
For j = 20 To i + 1 Step -1
If d(j) < d(j - 1) Then
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
Next j
Next iFor i = 1 To 20
List1.AddItem Str(i) + Str(d(i))
Next iEnd Sub
Private Sub Command1_Click()
Dim baojia As Integer,i as integer, j as integer, t as integer , m as integer
Randomize
List1.Clear
baojia = Val(Text1.Text)
i = 1
j = 20
Do While i<= j
m=(i+j)/2 ‘(2)________
If baojia = d(m) Then
Label3.Caption = "猜中 第" + Str(i) + "个"
Exit Do
ElseIf baojia<d(m) Then
j = m - 1
Else
i=m-1 ‘(3)________
End If
Loop
End Sub
在我国古代《孙子算经》中曾经提出这样一个问题,原文是这样的:“今有物,不知其数,三三数之,剩二;五五数之,剩三;七七数之,剩二;问物几何?”试用枚举算法来解决这一个问题。现分析如下,所寻找之数为满足如下条件的自然数:以3除余2,以5除余3,以7除余2。程序将从自然数1开始依次寻找,逐一判断某一自然数是否满足全部条件,直至在指定范围内找到满足条件的所有自然数。程序代码如下,请补充完整。

Private Sub Command1_Click()
Dim p As Integer 'sum 用来统计符合条件的自然数个数'
Dim n As Integer
Dim max As Integer '指定查找范围的最大自然数
List1.Clear
p = 0
max = Val(Text1.Text) 'Text1文本框中输入
n = 0
Do While n <= max
n = n + 1 '从自然数1开始不断往上寻找
If ① Then
List1.AddItem Str(n) '找到后在List1中显示结果
p=p+1
End If
Loop
List1.AddItem ("共计" + Str(n) + "个") ②
End Sub
应用程序界面设计时,为添加“ Text1”对象,应使用下图图所示的“控件工具箱”中的_________(填写相应编号),为了让文本框中的内容没有输入前显示为空,则可将_________属性值设置为空。

(2)程序中①划线处应填入___________,程序中②处一句话中有错误,应更改为______________。
某对分查找算法的VB 程序段如下:
i=l:j=9:n=0
key=Val(Text1,Text)
Do While i<=j
n=n+1
m=Fix((i+j) / 2)
If key=d(m) Then Exit Do ’Exit Do 表示退出循环
If key<d(m) Then j=m-1 Else i=m+1
Loop
数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n 的值为2,则key 的值是( )
i=l:j=9:n=0
key=Val(Text1,Text)
Do While i<=j
n=n+1
m=Fix((i+j) / 2)
If key=d(m) Then Exit Do ’Exit Do 表示退出循环
If key<d(m) Then j=m-1 Else i=m+1
Loop
数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n 的值为2,则key 的值是( )
A.39 | B.18 或61 | C.18 或72 | D.12 或61 |
7位学生的身高(单位:cm)从高到低依次为:178,177,175,172,170,165,162。用对分查找法找到178 的过程中,依次被访问到的数据是( )
A.178 | B.172,175,178 | C.172,177,178 | D.172,175,177,178 |
(加试题)某查找算法的 VB 程序段如下:
i = 1: j = 7: n = 0
Key = Val(Text1.Text)
Do While i <= j
n = n + 1
m = Int((i + j) / 2)
If Key = a(m) Then Exit Do
If Key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素 a(1)到 a(7)存放的数值依次为 8,21,27,36,79,28,98,若该程序段运行结束后,n 的值为 2,则 Text1 中输入的要查找的数是()
i = 1: j = 7: n = 0
Key = Val(Text1.Text)
Do While i <= j
n = n + 1
m = Int((i + j) / 2)
If Key = a(m) Then Exit Do
If Key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素 a(1)到 a(7)存放的数值依次为 8,21,27,36,79,28,98,若该程序段运行结束后,n 的值为 2,则 Text1 中输入的要查找的数是()
A.27 或 79 | B.28 | C.21 或 28 | D.21 |