内容正文:
第四章算法应用举例同步练习高中信息技术人教版选修1
1.二分查找又称折半查找,是一种应用于有序数列的高效查找算法。下列数列中适合二分查找算法的是( )
A.11 99 5 17 2 39 B.30 52 43 71 78 81
C.67 62 68 6 15 15 D.85 78 59 53 19 18
2.有以下VB程序段:
i=1:j=10:flag=True:cs=0
Key=Int(Rnd()*10)+28
Do While i<=j And flag=True
m=(i+j)\2:cs=cs+1
If a(m)=Key Then
flag=False
Elself a(m)<Key Then
i=m+1
Else
j=m-1
End If
Loop
数组元素a(1)到a(10)的值依次是3、10、17、23、27、30、35、40、45、50,变量cs的值可能是 ( )
A.1或2 B.2或3 C.3或4 D.4或5
3.有一个由4000个整数构成的顺序表,假定表中的元素已经按升序排列,采用二分查找定位一个元素。则最多需要( )次比较就能确定是否存在所查找的元素。
A.11次 B.12次 C.13次 D.14次
4.某对分查找算法的VB程序段如下:
n=0:i=l:j=6
key=Val(Text1.Text)
Do While i<=j
m=(i+j)\2
n=n+1
If key=d(m)Then Exit Do
If key>d(m)Then j=m-1 Else i=m+1
Loop
If i<=j Then s=Str( m-n)Else s=Str(n)
数组元素 d(1)到 d(6)的值依次为“88,77,53,47,39,28”,输入某个key值,运行该程序段后,变量s结果为1,则输入key的值是( )
A.89 B.77 C.47 D.39
5.有如下 VB 程序段:
s = Text1.Text
n = Len(s)
For i = 1 To n
c = Mid(s, i, 1)
If c >= "a" And c <= "z" Then t = Asc(c) - 32
Else t = Asc(c)
s1 = s1 + Chr(65 + (t - 63) Mod 26)
Next i
在文本框 Text1中输入“abXY”,s1的值最终是( )
A.CDZA B.cdZA C.ZACD D.ZAcd
6.有如下 VB 程序段:
a(1) = 5: a(2) = 9: a(3) = 11: a(4) = 12
a(5) = 15: a(6) = 15: a(7) = 25: a(8) = 27
low = 1: high = 8
Key = Text1.Text
Do While low <= high
m = (low + high) \ 2
If a(m) > Key Then
high = m - 1
Else
low = m + 1
End If
Loop
Text2.Text = Str(low)
执行该程序段后,文本框Text2显示的值为 2,则文本框 Text1 中输入的值不可能的是( )
A.5 B.6 C.8 D.9
7.有一个有趣的仓鼠繁殖问题:第一个月买来1对仓鼠,2个月后会生1对小仓鼠,以后每个月都会生1对小仓鼠;而生下来的仓鼠,也会从第二个月开始每月生1对小仓鼠,以此类推。试问一年后,仓鼠的总数达到多少?
分析问题得出出生月份与仓鼠对数关系图
程序中划线部分①②应填入的语句或表达式为( )
A.①i=0 To 12 ②a(i-1)+a(i-2)
B.①i=3 To 12 ②a(i-1)+a(i-2)
C.①i=3 To 12 ②a(i+1)+a(i+2)
D.①i=0 To 12 ②a(i+1)+a(i-2)
8.求输入的两个自然数的最大公约数。如输入48和36则输出最大公约数为12,为其中的空白处选择合适的选项( )。
A.输出 a B.输出 b C.输出 r D.输出 a / b
9.某对分查找算法的 VB 程序段如下:
n=0:i=1:j=8 key=Val(Text1.Text)
Do While i <=j
m=(i+j)\2
n=n+1
If key=d(m) Then Exit Do
If key > d(m) Then j=m-1 Else i=m+1
Loop
If i<=j Then s=Str(m-n) Else s=Str(n)
数组元素 d(