4.4查找同步练习人教版信息技术选修1
展开一、选择题
1.某对分查找算法的VB程序段如下:
key = Val(Text1.Text)
s= "" : i = 1: j = 10
D While i <= j
m = (i+j) \2
If a(m) = key Then Exit D ‘Exit D 表示退出循环
If key < a(m) Then
j = m-1 : s = s+"L"
Else
i= m + 1 : s= s + "R"
End If
Lp
按非降序排序的整型数组a(1)到a(10)的值依次为“11,23,31,39,44,52,60,x,69,89”。在文本框Textl中输入66,执行该程序段后s值为“RRL”,则x的可能值的个数为( )
A.3B.4C.5D.6
2.有如下 VB 程序段:
Key = Val(Text1.Text):s = 0: i = 1: j = 7
D While i <= j
m = (i + j) \ 2
s = s + m
If a(m) > Key Then j = m - 1 Else i = m + 1
Lp
Text2.Text = Str(s)
数组元素 a(1)到 a(7)的值依次为“12,15,18,20,20,20,29”,在文本框 Text1 中输入待查数,执行该程序段后,则文本框 Text2 中显示的内容不可能的是( )
A.7B.9C.15D.17
3.二分查找实际上就是( )的一种典型运用。
A.动态规划法B.分治策略C.回溯法D.递推法
4.某对分查找算法的VB程序段如下:
key = Val(Text1.Text)
s = ""
i = 1: j = 10
D While i <= j
m = (i + j) \ 2
s = s + Str(m)
If a(m) = key Then Exit D
If a(m) > key Then j = m - 1 Else i = m + 1
Lp
Label1.Captin = s
数组元素a(1)到a(10)依次存放10个升序的整数。在文本框Text1中输入一个任意整数执行该程序段,标签Label上中显示的内容可能的是( )
A.5 2 3 1B.5 3 2 4C.5 8 6 7D.5 8 9 7
5.某对分查找的VB程序如下:
i = 1: j = 8 : n = 0
key = Val(Text1.Text)
D While i <= j
m = (i + j- 1) \ 2
n=n+1
If a(m) >=key Then
i = m + 1
Else
j = m - 1
End If
Lp
Label1.Captin=Str(n)+Str(i)
数组元素a(1)到a(8)的值依次为“ 35,32,29,26,21,19,16,12”。在文本框Text1中输入17,执行该程序段后,标签Label1上显示的内容是( )
A.3 7B.2 7C.4 8D.2 8
6.一物品的价格在 100−500 元整数之间,如果采用二分法策略猜此物品的价格,至多需要猜多少次? ( )
A.8B.9C.10D.11
7.有如下 VB 程序段:
i = 1: j = 8: k = 4
Randmize
Key = (Int(Rnd * 4) + 20) * 4
D While i <= j
m = (i + j) \ 2
If Key = a(m) Then
Exit D
ElseIf Key < a(m) Then
j = m - 1: k = k / 2
Else
i = m + 1: k = k * 2
End If
Lp
数组元素 a(1)到 a(8)的值依次为 “80,82,84,86,88,90,92,94”,执行该程序段后, 变量 k 的值可能是( )
A.1,4,8B.2,4,8C.4,16,32D.1,4,16
8.二分查找算法利用的算法思想是( )
A.分治策略B.穷举法C.回溯法D.递归法
9.某对分查找的程序段如下:
a(1) = 92: a(2) = 84: a(3) = 81: a(4) = 76
a(5) = 69: a(6) = 53: a(7) = 24: a(8) = 5
Key = Int(Rnd * 50) + 50
L = 0: R = 0: n = 0
i = 1: j = 8
D While i <= j
n = n + 1
m = (i + j) \ 2
If a(m) > Key Then
i = m + 1
R = R + 1
Else
j = m - 1
L = L + 1
End If
Lp
程序执行后,下列说法正确的是( )
A.i的值可能小于等于jB.n的值一定是3
C.m的值可能4D.可能出现L的值是1,R的值为3的情况
10.二分查找又叫做折半查找,是一种应用于有序序列的高效查找算法。下列数列中适合二分查找算法的是( )
A.11 99 44 55 3 99 45B.43 71 78 8 55 12 46C.85 74 59 53 19 18 11D.10 15 25 20 65 75 55
二、填空题
11.【加试题】给定 n(n 小于 1000) 个整数, 整数的范围在 0 到m 之间, 请使用“对分法”思想求出这 n 个整数的中位数( 所谓中位数, 是指将这 n 个数排序之后 , 排在正中间的数)。
小丫编写了一个求中位数的VB 程序,功能如下:单击“求中位数”按钮Cmmand1,程序根据输入的n 和m,随机产生n 个在[0,m] 范围内的数。程序运行界面如下所示:
实现上述功能的VB 程序如下:
Dim x(1 T 1000) As Lng
Private Sub Cmmand1_Click()
Dim n As Integer, i As Integer, rbund As Integer, mid As Integer
Dim m As Integer, cunt As Integer
n = Val(Text1.Text)
m = Val(Text2.Text)
List1.Clear
Randmize
Fr i = 1 T n
x(i) =Int(Rnd * (m + 1)) ' 产生[0,m] 的随机数
List1.AddItem x(i)
Next i
lb = 0
rb = m
D While lb
①
Fr i = 1 T n
If ② Then
cunt = cunt + 1
End If
Next i
If cunt > n \ 2 Then
lb = mid + 1
Else
③
End If
Lp
Text3. text = str(rb)
End Sub
程序要实现该功能,画线处应填入的代码为:
①____________
②____________
③____________
12.某校学生会选举需要从学校数据库中随机抽取若干名学生作为监票人。该数据库文件名为schl.mdb,其中数据表student存储有关学生学号(xueha)、姓名(xingming)相关信息,括号内的内容为对应字段名。该程序编辑界面如图所示,相关对象名可参考标识图。
当主持人点击按钮“生成抽号”后,下方的标签会显示可抽取的学号姓名,一定时间后显示被抽取作为监票人的学号姓名。
'xxxss:学校学生数,kcq:可抽取
'xhxm:学号姓名,kcq:可抽取
Dim xxxss As Integer
Dim xhxm(3000) As String
Dim kcq(3000) As Blean
'cq_Click:启用两个定时器
Private Sub cq_Click()
cqxhxm.Enabled = True
xskcqxhxm.Enabled = True
End Sub
Private Sub cz_Click() '初始化数组kcq,使每个元素数据都处于可显示状态
Fr i =" 0" T xxxss - 1
kcq(i) = True '①
Next i
End Sub
Private Sub xskcqxhxm_Timer() '若数组kcq第x个元素处于可抽取状态,则显示数组xhxm第x个元素
x =" Int(Rnd" * xxxss)
If kcq(x) Then xhxmbq.text = kcq(x) '②
End Sub
Private Sub Frm_Lad() '从数据库中提取需要的学号姓名相关数据并初始化数组kcq
Randmize
xxxss = 0
Dim cnn As New ADODB.Cnnectin,rs As New ADODB.Recrdset
Dim str_cnn as String,str_sql As String
str_cnn = "driver="Micrsft" access driver(*.mdb);DBQ="&app.path&"\schl.mdb";
cnn.pen str_cnn
str_sql = "select * frm students"
rs.pen str_sql
D While Nt rs.ef
xxxss =" xxxss" + 1
xhxm(xxxss) = rs.fields("xueha")&rs.fields("xingming")
rs.mvenext
Lp
Fr i =" 0" T xxxss - 1
kcq(i) = True
Next i
End Sub
Private Sub cqxhxm_Timer() '决定抽取的学号姓名作为监票人
xskcqxhxm.Enabled = False
Fr i =" 0" T xxxss - 1
If xhxmbq.Captin =" xhxm(i)" Then kcq(i) = False
Next i
cqxhxm.Enabled = False
End Sub
13.数组a中有8个数据已按升序排列。
如果采用对分查找法查找数字77,则第一次查找的数组元素是_____,经过_______次查找后得到结果。
14.下列程序的功能是在text1中输入的自然数,分解为3个互不相同的质数(三个质数的和等于输入的自然数),并把分解产生的质数按升序顺序显示在左边的列表框中。例如,输入20,那么在列表框中会显示如右图所示结果。其中,上述界面中“开始处理”按钮的名称是“Cmmand1”,程序中函数f(x)的功能是判断x是否为质数,如果是质数则返回值为true,否则返回false。
请在下列程序代码的基础上按照要求设计该程序,完善程序中的划线部分。
Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer
Functin f(x) As Blean
f = True
Fr i =" 2" T Sqr(x)
If x Md i =" 0" Then ___________
Next i
End Functin
Private Sub Cmmand1_Click()
n = ________________
Fr a1 =" 2" T n
Fr a2 =" a1" T n
Fr a3 =" a2" T n
If _________________ And f(a1) And f(a2) And f(a3) Then
List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3))
End If
Next a3
Next a2
Next a1
End Sub
15.该流程图描述的是求实数a绝对值的算法。
在流程图的空白处应填入_____________。
三、操作题
16.对分查找算法可用于求解方程的近似解。现要求方程x3-4x2+x+5=0的一个近似解,可设f(x)=x3-4x2+x+5,若有区间[a,b],使f(a)与f(b)异号,则该区间内必存在该方程的一个解。小吴为比编写了VB程序,功能如下:分别在本框Text1和Text2中输入求解的区间值a和b(a实现上述功能的VB程序如下,请在划线处填上合适的代码。
Private Sub Cmmand1_Click()
Dim a As Duble, b As Duble, m As Duble, x As Duble
Dim ym As Duble, yb As Duble
a=Val(Text1.text):b=Val(Text2.Text)
If a>b Then t=a:a=b:b=t
D While ①____
m=(a+b)/2
ym=m^3—4*m^2+m+5
yb=b^3-4*b^2+b+5
If Abs(ym)<0.00001 Then Exit D
If ②___ Then
b=m
Else
a=m
End If
Lp
Text3.Text=Str(Int(m*10000)/10000)
End Sub
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
a(8)
17
22
33
34
41
46
61
85
参考答案:
1.D
2.C
3.B
4.C
5.A
6.B
7.D
8.A
9.B
10.C
11. cunt=0 x(i)>mid rb=mid
12.(1)kcq(i) = True (2)xhxmbq.Captin = xhxm(x)
13. 34 4
14.(1)f=False(1分) (2)Val(Text1.Text)(1分)
(3)a1+a2+a3=n(1分)
15.a<0
16. ①a<=b ②yb*ym>0
4.6趣味应用同步练习人教版信息技术选修1: 这是一份信息技术中图版 (2019)本册综合复习练习题,共7页。试卷主要包含了选择题,操作题等内容,欢迎下载使用。
2.4调试程序同步练习人教版信息技术选修1: 这是一份高中中图版 (2019)本册综合复习练习题,共11页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。
3.3排序和查找同步练习沪科版信息技术选修1: 这是一份高中信息技术教科版 (2019)选修4 人工智能初步本册综合同步训练题,共15页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。