2017届信息技术必修3算法与程序设计 第2单元算法与程序实现复习题

适用年级:高三
试卷号:549412

试卷类型:单元测试
试卷考试时间:2017/3/7

1.选择题(共13题)

1.
计算两个并联电阻总电阻的算法如下:
①输入两电阻R1,R2的值
②计算总电阻R=
③输出总电阻
上述算法属于(  )
A.枚举算法B.解析算法C.排序算法D.查找算法
2.
某书店在5所学校流动售书量(单位,本)分别是88,110,48,64,35。若采用冒泡排序算法对其进行从小到大排序,则第二趟的排序结果是(    )。
A.35   88    110  48   64
B.35   48    88   64   110
C.35   48    88   110  64
D.35   48    64   88   110
3.
使用VB中的ADO访问文件名为“Course.accdb”的Access数据库,与数据库建立连接的程序段如下:
Dim conn As New ADODB.Connection
conn.ConnectionString=“Provider=Microsoft.AC
A.OLEDB.12.0;Data Source=”+App.Path+“/monkey.accdb”
conn.Open
在调试时出现了如图所示的错误提示框。

产生该错误提示的原因可能是(  )
B.没有定义ADO的Connection对象实例
B. 没有打开Connection对象实例到数据库的连接
C.指定的数据库文件不存在
D.没有添加选择Microsoft ActiveX Data Objects 6.1 Library组件
4.
某超市商品信息管理系统中有1万条商品资料记录(已经索引排序),假设从中取出一条记录并与待查项进行比较所花的时间为20毫秒,则用对分法在该系统中查找任意一个指定商品最多花费的时间约为(  )
A.13毫秒B.14毫秒
C.280毫秒D.14万毫秒
5.
7位幼儿园小朋友的体重(单位kg)从低到高依次为:13,15,16,18,20,21,23。用对分查找法找到23的过程中,依次被访问到的数据是(  )
A.23B.18,21,23
C.18,23D.18,20,21,23
6.
观察如下VB程序段:
Function fx(n As Integer) As Long
If n=1 Then
fx=1
Else
fx=2*fx(n-1)
End If
End Function
Private Sub Command1_Click()
Dim n As Integer,x As Long
n=Val(Text1.Text)
x=fx(n)
Text2.Text=Str(x)
End Sub
若在文本框Text1中输入数字5,单击命令按钮Command1后,在文本框Text2显示的内容为(  )
A.2B.8C.16D.32
7.
计算三角形面积的算法如下:
①输入三角形三边长a,b,c
②计算半周长p=(a+b+c)/2
③计算三角形面积s=Sqr(p*(p-a)*(p-b)*(p-c))
④输出面积s
上述算法属于(  )
A.排序算法B.解析算法
C.枚举算法D.查找算法
8.
统计1~1 000间个位数是4,且能被9整除的数共有多少个,可以采用的算法是(  )
A.查找算法B.枚举算法
C.解析算法D.排序算法
9.
如果一个4位数恰好等于它的各位数字的4次方和,则这个数被称为“玫瑰花”数。例如1634就是一个玫瑰花数:1634=14+64+34+44。如果要求出所有的玫瑰花数,下列算法合适的是(  )
A.查找法B.解析法
C.穷举法D.排序法
10.
寻找数组元素a(1)到a(10)中最小值min程序段如下:
For i=2 To 10
If a(i)<min Then min=a(i)
Next i
方框中最合适的语句是(  )
A.a(1)=minB.a(1)=0
C.min=a(1)D.min=0
11.
有如下程序段:
s=“”
For i=1 To 3
For j=7 To i+1 Step-1
If a(j)<a(j-1) Then
k=a(j):a(j)=a(j-1):a(j-1)=k
End If
Next j
s=s+Str(a(i))
Next i
Text1.Text=s
数组元素a(1)到a(7)的数据依次为“3,9,1,5,8,6,2”,经过该程序段“加工”后,文本框Text1中显示的内容是(  )
A.1 2 3B.9 8 6
C.3 9 1D.8 6 2
12.
已知单调函数f(x)在[0,1]区间存在一个x0,使f(x0)=0。现用对分查找法搜索x0的值,开始搜索区间为[0,1],若经过10次对分查找后还需继续搜索,则第11次搜索区间的长度为(  )
A.1/2B.1/10 
C.1/102D.1/210
13.
某市组织了一次我心目中最喜爱的球队的评比活动,6个球队网上投票数为201、287、501、189、397、295,若采用冒泡排序算法对其进行从大到小排序,则第三遍加工后的结果是(  )
原始数据
201
287
501
189
397
295
第一遍
501
201
287
397
189
295
第二遍
501
397
201
287
295
189
第三遍
 
 
 
 
 
 
 
A.501 397 295 287 201 189
B.501 397 201 287 295 189
C.501 397 295 201 189 287
D.501 397 295 201 287 189

2.填空题(共9题)

14.
王敏的E­Mail邮箱密码忘记了,但她需要收一封很重要的来信,请你帮她尽可能找出密码。
她零星记得自己的密码信息:
①密码是六位数字,前面两位为31;
②最后两位数字相同;
③能被16和46整除。
程序界面如图所示,单击“帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。

解决此问题的相应程序如下:
Private Sub Command1_Click()
Dim a As Integer,s As long,b As Integer,i As Integer
For i=0 To 9 999 ①________
s=310 000+i
If s Mod 46=0 Then
②________
b=(s Mod 100)\100
If a=b Then
List1.Addltem Str(s)
End If
End If
Next i
End Sub

(1)解决此问题的算法是________(选填:枚举算法或排序算法)
在程序①和②画线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①画线处应填入________。
(3)程序中②画线处应填入________。
15.
在数组元素a(1)到a(5)中查找键值为key的数,其查找算法的VB程序段如下:
Dim a(1 To 5) As Integer
Dim Key As Integer
Private Sub Command1_Click()
t=0
For i=1 To 5
If ________ Then
t=i
Exit For ’②
End If
Next i
Print t
End Sub
Private Sub Form_Load()
’此过程用于对数组a和查找键Key进行赋初值,代码略
End Sub
(1)该程序段中所用的查找算法是_____________________________________。
(2)在程序①划线处,填入适当的语句或表达式,把程序补充完整:程序中①划线处应填入_____________________________________________。
当数组元素a(1)到a(5)中存储的数据为(2,5,1,9,5),查找键Key为5时:
(3)该程序运行结束,t的值是_____________________________。
(4)如果将②所标记的Exit For语句删除,该程序运行结束时,t的值是________。
16.
学校需要统计学生的作业完成数,需要将学生的完成数按从高到低显示,下列程序模拟该信息处理过程,程序在数据库stud中找到的学生信息(编号和完成次数),并将所有学生按照完成数从高到低显示。先将所有学生的编号和完成次数从数据库stud的info表中ID和finshed两字段中取出分别保存在数组a和数组b中,第i个学生的编号保存在a(i)中,对应的作业完成次数保存在b(i)中。
数据库文件“stud.accdb”信息如图1所示。

图1
程序界面如图2所示,左边列表框List1中显示所有学生信息(包括编号和完成次数),单击“排序”按钮(Command1),所有编号按照作业完成次数从高到低显示在列表框List2中。

图2
代码如下:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim n As Integer
Dim a(500) As String
Dim b(500) As Integer
Private Sub Form_Load()
Dim i As Integer
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;DATA Source=”& App.Path & “/stud.accdb”
conn.Open
Set rs.ActiveConnection=conn
rs.Open “SELECT*FROM info”
n=0
Do While Not rs.EOF ’到记录集最后一条记录后退出循环
n=n+1
a(n)=rs.fields(“id”)
b(n)=rs.fields(“finshed”)
rs.MoveNext    ’移动到下一条记录
Loop
For i=1 To n
List1.AddItem a(i)+“”+Str(b(i))
Next i
rs.Close
conn.Close
Set rs=Nothing
Set conn=Nothing
End Sub
Private Sub Command1_Click()
Dim i As Integer,j As Integer,t1 As Integer,t2 As String,k As Integer
For i=1 To n-1 ’n表示学生总数
k=i ’k保存第i大的数,一开始假定是a(i)
For j=i+1 To n
If b(k)<b(j) Then k=j ’比较完成数
____
If ________ Then
t1=b(i):b(i)=b(k):b(k)=t1 ’交换完成次数
t2=a(i):a(i)=a(k):a(k)=t2 ’交换编号
End If
Next i
For i=1 To n ’在列表框List2中输出排序结果
List2.AddItem a(i)+“    ”+Str(b(i))
Next i
End Sub
(1)当“Form_Load()”事件处理过程运行结束时,变量n的值为:________。
(2)加虚线框中的代码采用的排序算法为: ______________________________。
(3)为实现上述功能,程序中划线处的代码为:
①________;②________。
17.
在已排序的数组d[数组元素d(1)≥d(2)≥…≥d(n)]中查找键值为Key的数,其对分查找的VB程序段如下:
i=1:j=n
xb=0
Do While i<=j
m=Fix((i+j)/2)
If d(m)=Key Then
xb=m
Exit Do
End If
If d(m)>Key Then
____
Else
____
End If
Loop
划线处的语句为(  )
A.①j=m+1 ②i=m+1B.①i=m-1 ②j=m-1
C.①j=m-1 ②i=m+1D.①i=m+1 ②j=m-1
18.
某次测验后,一位同学利用VB编写了一个查分系统。他首先把班级所有同学的学号、姓名、总分及名次数据存放在名为“student.accdb”的info表中。查分系统的功能如下:在文本框Text1中输入学号,单击“开始查找”按钮,若找到该学号,则在标签Label4中该学生的学号、姓名、总分及名次;若找不到该学号,则显示“查无此人”。按此要求编写程序如下,但加框处代码有错,请改正。

Dim a (1 To 50) As String ’用来存放学号数据
Dim b (1 To 50) As String ’用来存放姓名数据
Dim c (1 To 50) As Single ’用来存放总分数据
Dim d (1 To 50) As Integer  ’用来存放名次数据
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;DATA Soure=”+App.Path+“/Student.accdb”
conn.Open
Set rs.ActiveConnection=conn
rs.Open “SELECT*FROM info”
n=0
Do While Not rs.EOF
n=n+1
a(n)=rs.Fields(“学号”)
b(n)=rs.Fields(“姓名”)
c(n)=rs.Fields(“总分”)
d(n)=rs.Fields(“名次”)
rs.Move Next
Loop
rs.Close
conn.Close
Set rs=Nothing
Set conn=Nothing
End Sub
Private Sub Command1_click()
Dim key As String,i As Integer
Dim find As Boolean
key=Text1.Text
i=1
find=True
Do While And find①
If key=a(i) Then
find=False
Else

End If
Loop
If find=False Then
Label4.Caption=“学号为”+key+“的名字为”+b(i)+“总分为”+c(i)+“名次为”+d(i)
Else
Label4.Caption=“查无此人”
End If
End Sub
程序中①加框处改为:_____________________________________。
程序中②加框处改为:_____________________________________。
19.
学校为每位同学办理一张校园卡,该卡可供同学们在食堂用饭、图书馆借书、超市消费等,因此称为一卡通,一卡通的卡号是唯一的,卡内会记录每位同学的姓名、班级、金额等信息。下列程序的功能是根据卡号查找对应的姓名,程序中数组a保存卡号,数组b保存姓名,第i位同学的卡号是a(i),姓名是b(i)。
程序界面如下图所示,左边列表框列出所有同学的卡号和姓名,在右边文本框Text1中输入卡号,单击“查询”按钮(Command1),程序就按卡号进行查找,如果找到就在标签Label3中输出姓名,否则就输出“查无此人”。

解决此问题的算法流程图如下图所示,相应的程序如下,在程序(1)和(2)画线处,填入适当的语句或表达式,把程序补充完整。
Private Sub Command1_Click()
Dim x As String,i As Integer,s As String,f As Boolean
x=Text1.text
i=0;f=False ’f标志是否已经找到,值为True时表示已经找到,值为False时表示没找到
Do While(i<n) And((1)________) ’n是总人数
i=i+1
If x=a(i) Then
f=True
End If
Loop
If f=True Then
(2)________
Else
s=“查无此人!”
End If
Label3.Caption=s
End Sub

(1)解决此问题所用的算法是________。(选填:顺序查找或对分查找)
(2)程序中画线处(1)应填入________。
(3)程序中画线处(2)应填入________。
20.
某协会进行钓鱼比赛,最后有十人进入决赛,录入员编制了如下Visual Basic程序,功能是根据成绩进行排序,程序中数组  a保存所有参赛者的成绩,数组b保存此成绩对应的姓名,第i位参赛者的成绩保存在a(i)中,姓名保存在b(i)中。
程序界面如图所示,左边列表框List1中显示原始数据(成绩和相应的姓名),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示在列表框List2中。

解决此问题的算法流程图如图所示,排序部分的程序段如下:
Dim a (1 To 10) As Single
Dim b (1 To 10) As String
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,x As Single,y As String
For i=1 To 9
k=i
For j=i+1 To 10
If ①________ Then k=j
Next j
If k<>i Then
x=a(i):a(i)=a(k):②________
y=b(i):b(i)=b(k):b(k)=y
End If
Next i
For i=i To 10
List2.AddItem Str(a(i))+“    ”+b(i)
Next i
End Sub
Private Sub Form_Load()
’此过程用于对数组a和数组b进行初始赋值,代码略
End Sub

(1)解决此问题的算法是________。(选填:冒泡排序或选择排序)
在程序①和②画线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①画线处应填入________。
程序中②画线处应填入________。
21.
小树要买一本书,收集了各个网上书店中该书的售价,她设计了一个VB排序程序,帮助她将售价由低到高排序。程序运行界面如图所示,左边列表框List1中显示排序前数据,单击“排序”按钮Command1,在右边列表框List2中显示按售价从低到高排序后的结果,在标签Label3中显示比较次数(此图中比较的次数用图像处理软件遮挡)。程序中数组a和数组b分别存储网上书店名称和对应的售价。

程序代码如下:
Const n As Integer ’n为比较次数
Dim a(1 To n)As String ’数组a用于存储网上书店名称
Dim b(1 To n) As Integer ’数组b用于存储售价
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,t As Single,s As String
Dim num As Integer
num=0
For i=1 To 4
k=i
For j=________ To 5
If b(k)>b(j) Then k=j
____
Next j
If ________ Then
s=a(i):a(i)=a(k):a(k)=s
t=b(i):b(i)=b(k):b(k)=t
End If
Next i
For i=1 To 5
List2.AddItem a(i)+“    ”+Str(b(i))
Next i
Label3.Caption=“比较次数为:”+Str(num)+“次”
End Sub
Private Sub Form_Load()
’此过程用于对数组a和数组b进行赋初值,并显示在List1中,代码略
End Sub
(1)在程序①、②和③划线处填入适当的语句或表达式,将程序补充完整:
程序中①划线处应填入________________________________________。
程序中②划线处应填入________________________________________。
程序中③划线处应填入________________________________________。
(2)程序结果中被遮掉的比较次数是多少? ______________________。
22.
兔子吃萝卜。兔子拔了一堆萝卜,第一天吃了一半,还嫌不过瘾,又吃了一个,第二天又将剩下的萝卜吃掉一半,又多吃了一个,以后每天如此。到第10天想再吃时,见只剩下一个萝卜了。求第一天共拔了多少萝卜。小明编写了一个VB程序,用于计算兔子第一天拔的萝卜总数。程序运行界面如图所示。

Private Sub Command1_Click()
Dim i As Integer,sum As Integer
sum=1
For i=9 To 1 ________
________
Next i
Text1.Text=Str(sum)
End Sub
回答下列问题:
(1)该程序采用的算法是________(填:解析算法/枚举算法)
(2)显示计算结果的控件属于________类,该控件的名称是________。
(3)划线①处应填入的语句为________。
划线②处应填入的语句为________。
试卷分析
  • 【1】题量占比

    选择题:(13道)

    填空题:(9道)

  • 【2】:难度分析

    1星难题:0

    2星难题:0

    3星难题:0

    4星难题:0

    5星难题:0

    6星难题:0

    7星难题:0

    8星难题:0

    9星难题:22