2017届信息技术必修3算法与程序设计 第2单元算法与程序实现复习题
全国
高三
单元测试
2017-03-01
267次
整体难度:
容易
考查范围:
数据与计算、算法理论、算法软件操作、数据及数据库技术
一、选择题 添加题型下试题
A.查找法 | B.解析法 |
C.穷举法 | D.排序法 |
【知识点】 典型算法
A.35 88 110 48 64 |
B.35 48 88 64 110 |
C.35 48 88 110 64 |
D.35 48 64 88 110 |
【知识点】 排序算法及程序实现
For i=2 To 10
If a(i)<min Then min=a(i)
Next i
横线处最合适的语句是( )
A.a(1)=min | B.a(1)=0 |
C.min=a(1) | D.min=0 |
【知识点】 VB程序的调试
二、操作题 添加题型下试题
程序界面如下图所示,左边列表框列出所有同学的卡号和姓名,在右边文本框Text1中输入卡号,单击“查询”按钮(Command1),程序就按卡号进行查找,如果找到就在标签Label3中输出姓名,否则就输出“查无此人”。
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285429248/STEM/25803bd9-c8fa-4434-8628-5e1da6d87772.png?resizew=380)
解决此问题的算法流程图如下图所示,相应的程序如下,在程序(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
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285429248/STEM/ca8f9fa9-4164-4a17-ae4c-55f3b9c558d2.png?resizew=364)
(1)解决此问题所用的算法是________。(选填:顺序查找或对分查找)
(2)程序中画线处(1)应填入________。
(3)程序中画线处(2)应填入________。
【知识点】 算法及算法的表示方法 VB程序的调试
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285445632/STEM/c285e58812f34f6ca0e5caa450802be0.png)
程序代码如下:
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)程序结果中被遮掉的比较次数是多少? ______________________。
【知识点】 VB程序的调试
三、选择题 添加题型下试题
A.13毫秒 | B.14毫秒 |
C.280毫秒 | D.14万毫秒 |
【知识点】 典型算法
A.23 | B.18,21,23 |
C.18,23 | D.18,20,21,23 |
【知识点】 查找算法及程序实现
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.2 | B.8 | C.16 | D.32 |
【知识点】 典型算法
Dim conn As New ADODB.Connection
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=”+App.Path+“/monkey.accdb”
conn.Open
在调试时出现了如图所示的错误提示框。
A.没有定义ADO的Connection对象实例 |
B.没有打开Connection对象实例到数据库的连接 |
C.指定的数据库文件不存在 |
D.没有添加选择Microsoft ActiveX Data Objects 6.1 Library组件 |
【知识点】 VB程序的调试 数据库与数据库管理系统
四、操作题 添加题型下试题
数据库文件“stud.accdb”信息如图1所示。
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285519360/STEM/57a7b40a3a3d49809c5289ba3992740d.png?resizew=312)
图1
程序界面如图2所示,左边列表框List1中显示所有学生信息(包括编号和完成次数),单击“排序”按钮(Command1),所有编号按照作业完成次数从高到低显示在列表框List2中。
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285519360/STEM/ce8d81ae11ea4a99916564fa128cbab2.png?resizew=291)
图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
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285519360/STEM/c23f8bec4bba4dc5a370c2bd6b8a7f4d.png?resizew=369)
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)为实现上述功能,程序中划线处的代码为:
①________;②________。
【知识点】 排序算法及程序实现
五、选择题 添加题型下试题
A.查找算法 | B.枚举算法 |
C.解析算法 | D.排序算法 |
【知识点】 典型算法
①输入两电阻R1,R2的值
②计算总电阻R=
![](https://staticzujuan.xkw.com/quesimg/Upload/formula/cb373f8c41ae8c9cc160fb21a01feb2d.png)
③输出总电阻
上述算法属于( )
A.枚举算法 | B.解析算法 | C.排序算法 | D.查找算法 |
【知识点】 典型算法
六、操作题 添加题型下试题
(1)后4位数字中的前2位数字相同;
(2)后4位数字中的后2位数字也相同;
(3)后4位数字正好是一个完全平方数。
某同学编写了一个VB程序用于寻找这个8位数。程序运行时,单击“计算”按钮Command1,在标签Label2中显示这个8位数,程序运行界面如图所示。
Dim i As Long,a As Integer,b As Integer,c As Integer,d As Integer,x As Integer
For i=32 To 99
n=i*i
x=____①____
y=____②____
a=x/10
b=x Mod 10
c=y\10
d=y Mod 10
If a=b And c=d Then ____③____
Next i
End Sub
为实现上述功能,请在程序划线处填入合适的语句。
划线①处应填入的语句为:_________________________________________;
划线②处应填入的语句为:_________________________________________;
划线③处应填入的语句为: ______________________________。
【知识点】 典型算法
七、选择题 添加题型下试题
①输入三角形三边长a,b,c
②计算半周长p=(a+b+c)/2
③计算三角形面积s=Sqr(p*(p-a)*(p-b)*(p-c))
④输出面积s
上述算法属于( )
A.排序算法 | B.解析算法 |
C.枚举算法 | D.查找算法 |
【知识点】 典型算法
八、操作题 添加题型下试题
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285576704/STEM/941f9288bb8d42a7ae6e29d89470d21a.png)
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)划线①处应填入的语句为________。
划线②处应填入的语句为________。
【知识点】 典型算法
九、选择题 添加题型下试题
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 3 | B.9 8 6 |
C.3 9 1 | D.8 6 2 |
【知识点】 排序算法及程序实现
A.1/2 | B.1/10 |
C.1/102 | D.1/210 |
【知识点】 查找算法及程序实现
十、操作题 添加题型下试题
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的值是________。
【知识点】 查找算法及程序实现
她零星记得自己的密码信息:
①密码是六位数字,前面两位为31;
②最后两位数字相同;
③能被16和46整除。
程序界面如图所示,单击“帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285625856/STEM/b3b51513ec2c46c1a7926b29e573843a.png)
解决此问题的相应程序如下:
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
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285625856/STEM/62125e6a221041e5b134470d0b908fee.png)
(1)解决此问题的算法是________(选填:枚举算法或排序算法)
在程序①和②画线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①画线处应填入________。
(3)程序中②画线处应填入________。
十一、填空题 添加题型下试题
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+1 | B.①i=m-1 ②j=m-1 |
C.①j=m-1 ②i=m+1 | D.①i=m+1 ②j=m-1 |
【知识点】 查找算法及程序实现
十二、选择题 添加题型下试题
原始数据 | 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 |
【知识点】 数据管理
十三、操作题 添加题型下试题
程序界面如图所示,左边列表框List1中显示原始数据(成绩和相应的姓名),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示在列表框List2中。
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285675008/STEM/291a2b95bce744f7982c9fe71199fb9f.png?resizew=302)
解决此问题的算法流程图如图所示,排序部分的程序段如下:
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
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285675008/STEM/7ffb42e4d021429c8c38ce2e741a0284.png?resizew=242)
(1)解决此问题的算法是________。(选填:冒泡排序或选择排序)
在程序①和②画线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①画线处应填入________。
程序中②画线处应填入________。
【知识点】 排序算法及程序实现
十四、选择题 添加题型下试题
A.14.8 14.1 12.3 11.2 13.9 11.0 |
B.11.0 12.3 11.2 14.8 13.9 14.1 |
C.14.8 12.3 11.2 14.1 13.9 11.0 |
D.11.0 14.1 12.3 11.2 14.8 13.9 |
【知识点】 排序算法及程序实现
十五、操作题 添加题型下试题
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285707776/STEM/be2d97dbd70c4aeeb9b4cfe98d0554b9.png?resizew=302)
实现上述功能的VB代码如下,请在划线处填入适当的语句:
Dim A(1 To 10) As Integer ’用于保存10个按从小到大顺序排列的整数
’Form_Load事件过程产生10个整数,按升序保存在数组A中,并在标签Label1中显示Private Sub Form_Load()
’代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer,j As Integer,m As Integer,k As Integer
Dim x As Integer,f As Boolean ’变量f用于标记是否在数组中找到x
x=Val(Text1.Text)
i=1:j=10
f=False
Do While(i<=j)And (f=False)
m=Int((i+j)/2)
If A(m)=x Then f=True
If (1) Then i=m+1 Else j=m-1
Loop
If f=True Then
For k=m To 9
(2)
Next k
Label2.Caption=“”
For k=1 To 9
Label2.Caption=Label2.Caption+Str(A(k))+“”
Next k
Else
Label2.Caption=“该数没有找到”
End If
End Sub
【知识点】 查找算法及程序实现
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 (1) And find
If key=a(i) Then
find=False
Else
(2)
End If
Loop
If find=False Then
Label4.Caption=“学号为”+key+“的名字为”+b(i)+“总分为”+c(i)+“名次为”+d(i)
Else
Label4.Caption=“查无此人”
End If
End Sub
程序中(1)处语句:_____________________________________。
程序中(2)处语句:_____________________________________。
【知识点】 VB程序的调试
![](https://img.xkw.com/dksih/QBM/2017/3/7/1730005285347328/1730005285732352/STEM/4dbb6b82df3d4e298137b41affa5335c.png?resizew=189)
实现上述功能的VB代码如下,请在横线处填写正确的语句。
Dim a(1 To 8) As Integer
Dim n As Integer
Private Sub Form_Load()
’n=8,排序前数据存储在数组a中,并在列表框List1中显示
’代码略
End Sub
Private Sub Command1_Click()
Dim flag As Boolean ’flag值为True表示一遍加工中发生过交换
i=1
flag=True
Do While (1)
flag=False
For j=n To i+1 Step-1
If a(j)<a(j-1) Then
k=a(j):a(j)=a(j-1):a(j-1)=k
flag=True
End If
Next j
i=i+1
Loop
Label3.Caption=“排序过程的加工遍数为”+ “ (2) ”
For i=1 To n
List2.Addltem Str(a(i))
Next i
End Sub
试卷分析
试卷题型(共 26题)
试卷难度
知识点分析
细目表分析 导出
题号 | 难度系数 | 详细知识点 | 备注 |
一、选择题 | |||
1 | 0.94 | 典型算法 | |
2 | 0.85 | 排序算法及程序实现 | |
3 | 0.85 | VB程序的调试 | |
6 | 0.85 | 典型算法 | |
7 | 0.85 | 查找算法及程序实现 | |
8 | 0.85 | 典型算法 | |
9 | 0.85 | VB程序的调试 数据库与数据库管理系统 | |
11 | 0.94 | 典型算法 | |
12 | 0.94 | 典型算法 | |
14 | 0.65 | 典型算法 | |
16 | 0.85 | 排序算法及程序实现 | |
17 | 0.85 | 查找算法及程序实现 | |
21 | 0.65 | 数据管理 | |
23 | 0.65 | 排序算法及程序实现 | |
二、操作题 | |||
4 | 0.65 | 算法及算法的表示方法 VB程序的调试 | |
5 | 0.65 | VB程序的调试 | |
10 | 0.65 | 排序算法及程序实现 | |
13 | 0.4 | 典型算法 | |
15 | 0.65 | 典型算法 | |
18 | 0.65 | 查找算法及程序实现 | |
19 | 0.65 | VB程序的调试 算法的控制结构 | |
22 | 0.4 | 排序算法及程序实现 | |
24 | 0.65 | 查找算法及程序实现 | |
25 | 0.65 | VB程序的调试 | |
26 | 0.65 | 排序算法及程序实现 VB程序的调试 | |
三、填空题 | |||
20 | 0.65 | 查找算法及程序实现 |