内容正文:
2023-2024学年高一上学期选修一第三单元第二节 递推、迭代与问题解决
一、选择题
1.直接或间接地调用函数自身的方法为( ),不断用变量的旧值推出新值的过程为( ).
A.递归 枚举 B.迭代 枚举 C.迭代 递归 D.递归 迭代
2.下列VB程序模块可以计算正整数n阶乘的值。
Function f(n As Integer) As Integer
If n < =" 1" Then
f = 1
Else
f =" n" * f(n - 1)
End If
End Function
该模块采用的算法是( )
A.枚举 B.查找 C.排序 D.递归
3.下列适合用来解决裴波那契数列的方法的是( )
A.枚举法 B.直接法 C.迭代法 D.以上均不是
4.下列程序执行后,整型变量n的值为( )。
n=0
for i="1" to 100
if i mod 4="0" then
n="n+1"
end if
next i
A.5050 B.25 C.26 D.33
5.某VB程序段如下:
Function f (n As Integer) As Long
If n = 1 Then
f = 5
Else
f= 2*f(n-1) – 3
End If
End Function
Private Sub Command1_click()
Dim n As Integer
n = Val (Text1.Text)
Text2. Text = Str(f(n))
End Sub.
该程序段运行后,在文本框Text1中输入5,单击命令按钮Command1后,文本框Text2中显示的是( )
A.18 B.35 C.63 D.123
6.有序数列3.6,8,11.6,22,24,27,31,36.5,35,46,通过对分查找查找数31,需找( )次
A.4 B.3 C.2 D.1
7.有如下VB程序:
Function f(i As Integer)
If i=1 Then
f=2
Else
f=2 * 10^(i-1)+f(i-1)
End If
End Function
Private Sub Command1_Click()
Dim n As Integer,s As Integer,i As Integer
n=Val(Text1.Text)
s=0
For i=1 To n
s=s+f(i)
Next i
Labell.Caption=Str(s)
End Sub
若在Textl中输入5,则Labell中显示的内容为( )
A.22222 B.24690 C.20000 D.2468
8.斐波那契的兔子繁殖问题可以利用迭代算法来解决的,解决该问题的正确选项及其顺序应该是( )
①建立迭代关系式 ②确定迭代变量 ③对迭代过程进行控制 ④让迭代过程无休止地重复执行
A.①②③④ B.①②③ C.②①③ D.②③④
9.小明编写一个模拟qq登录的VB程序。当输入用户名、密码和验证码,点击登录按钮后,会跳出信息框提示是否验证成功。部分程序与流程图如下所示:
uname = Text1.Text '输入用户名
psd = Text2.Text '输入密码
vcode = Val(Text3.Text) '输入验证码
If vcode <> Val(Label3.Caption) Then
MsgBox “” 'Label3显示的是随机验证码
ElseIf uname <> "admin" Or psd <> "123456" Then
MsgBox “ ”
Else
MsgBox “ ”
方框中正确的语句是( )
A.①中“验证成功” B.②中“输出用户名或密码有误”
C.②中“验证成功” D.③中“输出验证码错误”
10.有一组数据为“2、3、5、5、7、7、8”,利用顺序查找和对分查找查找5时,则分别查找几次可以找到目标值( )
A.3无法使用对分查找 B.4无法使用对分查找
C.3 1 D.4 1
11.以下流程图的功能是:求1*3*5*7……*97*99的值,为完成该功能,空白处应填写的内容是( )。
A.i>49 B.i>=49 C.i>=99 D.i>99
12.有8阶楼梯,从第0阶开始往上走,每次可以走一步或者两步,自定义函数fg可以计算走完n阶楼梯有多少种走法,程序如下:
Function fg(n As Integer)As Integer
If n=1 fg=1
If n=2 fg=2
If n>=3 fg=fg(n-1)+fg(n-2)
End Function
请问走完这8阶楼梯的走法有( )
A.34种 B.35种 C.36种 D.37种
13.斐波那契数列,运用函数递归的方法可以实现,运用迭代的方式也可以实现,而且比函数递归要快许多。下列关于斐波那契数列的迭代表达式正确的是( )。
A.f,f2,f2=f1+f2 B.fl=fl+f2,f2=
C.fl,f2=f2,fl+f2 D.f=f1+f2,fl=f2,f2=f
14.有如下程序段:
def cal(n):
if n <= 1:
return 1
if n % 2 == 0:
return 2*cal(n-1)
return 1+cal(n-1)
执行语句k=cal(5),则k的值为( )
A.6 B.7 C.10 D.11
15.某VB程序的一个事件过程如下:
Private Sub Commandl_Click()
Dim i As Integer,j As Integer.s As String
Dim a(1 To 5) As Integer
List1.Clear
Randomize
For i="1" To 10
j="Int(Rnd*6)+1"
a(j)=a(j)+1
Next i
For i="1" To 5
s=Str(a(i))
List1.AddItem s
Next i
End Sub
程序运行时,单击按钮Commandl后弹出如图所示的错误提示。出现错误的语句是( )
A.j=Int(Rnd*6)+1 B.a(j)=a(j)+1
C.s=Str(a(i)) D.List1.AddItem s
二、填空题
16.下列程序的功能是:随机产生10个1—100之间的正整数,按从小到大排序并输出。为了实现这一目标,程序中划线处应填入的合适语句是:
①______________ _
②__________ _____
Const n=10
Dim i As Integer,j As Integer,t As Integer
Dim a(1 to 10) As Integer
For i="1" to 10
_____①_______
Next i
For i="1" to n-1
For j="i+1" to n
If ____②____ Then
k=a(i):a(i)=a(j):a(j)=k
End If
Next j
Next i
For i="1" To n
Print a(i)
Next i
17.辗转相除法,又名欧几里德算法(Euclidean algorithm),是求两个正整数最大公约数的算法。它是已知最古老的算法之一,其可追溯至3000年前。用辗转相除法来得一个分数的约分后的最简形式的算法如下:
第一步:设两数为a、b,且令a>b;
第二步:a÷b,令r为所得余数,若r=0,算法结束,b 即为最大公约数;若r>0则a←b,b←r,并返回第二步;
第三步:即为约分后的最简形式。
编写VB程序,程序运行界面如第6题图1所示,请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Dim a As Integer, b As Integer, r As Integer 'a、b为分子和分母,r为最大公约数
a = Val(Text1.Text)
b = Val(Text2.Text)
If b =" 0" Then c = MsgBox("分母不能为0"): Exit Sub
'如果分母为0,则提示“分母不能为0”并退出该过程
r = ①
Text3.Text =" Str(a" / r)
Text4.Text =" Str(b" / r)
End Sub
Function gys(ByVal m As Integer, ByVal n As Integer) As Integer
'gys函数用于求最大公约数
Dim s As Integer
If m < n Then
t =" m:" m =" n:" n = t
End If
Do While n <> 0
s =" m" Mod n
m = n
n = s
Loop
②
End Function
18.下面程序的功能是:计算表达式1+3+5+…+(2n-1)的值,程序运行时在文本框Text1中输入n的值,计算结果在文本框Text2中输出。则程序中加框处的语句应分别更正为:
(1)__________________
(2)__________________
Private Sub Command1_Click()
Dim sum As Long,i As Integer,n As Integer
sum = 0
n =Val( Text1.Text)
For i =" 1" To 2 * n - 1 Step 2
sum =" sum" + 2
Next i
Text2.label=Str(sum)
End Sub
19.迭代法也称 ,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到所需的目标或结果。每一次对过程的 称为一次“迭代”,而每一次迭代得到的 会被用来作为下一次迭代的 。
20.现要求编写VB程序,界面如第2题-1图所示。程序功能如下:在文本框Text1中输入身份证号码,单击“识别”按钮Command1,在标签Label3中输出对应的性别。
具体方法为:
(1)若身份证号为15位,则根据第15位数字来判断,若为偶数则性别“女”,否则为“男”;(2)若身份证号为18位,则根据第17位数字来判断,若为偶数时则性别为“女”,否则为“男”。应用程序界面设计时,为添加“识别”按钮,应使用2图中“控件工具箱”中的 (填写相应编号),并修改3图“属性窗口”中,将 属性值设置为“识别”
请根据题意将下列程序补充完整
Dim x As String, n As Integer, s As String
x = Text1.Text
n = Len(x)
If n =" 15" Then
s = Mid( ① , Len(x), 1)
If Val(s) Mod 2 =" 0" Then
Text2.Text = "女"
Else
Text2.Text = "男"
End If
Else
s="Mid(x," 17, 1)
If ② Then
Text2.Text = "男"
Else
Text2.Text = "女"
End If
End If
三、操作题
21.程序完善题。该程序要实现的功能是:计算下列分段函数的值。请将程序中方框部分的程序段补充完整。
Dim x As Single
Dim y As Single
x = Val(InputBox("请输入x的值:"))
Print y
22.小华同学设计了一个VB程序,其功能是在text1中输入文本,点击“统计”按钮,自动统计字母a和字母b的出现次数,并显示在text2和text3中。程序设计界面如下图所示:
(1)运行程序时发现窗体的标题显示为“form1”,将窗体标题显示为“字母统计”,应修改窗体form1的_____________属性。
(2)通过窗体的加载事件也可以修改窗体的标题属性,请补充下列代码
Private Sub Form_Load()
___________________= "字母统计"
End Sub
(3)根据题意,将下列程序补充完整。
Private Sub Command1_Click()
Dim s As String,i As Integer,ta As Integer,tb As Integer
Dim lens As Integer ‘变量lens表示字符串s的字符个数
s = Text1.Text
lens =________________
For i =" 1" To lens
If Mid(s,I,1)= "a" Then ta =" ta" + 1
If Mid(s,i,1)= "b" Then tb =" tb" + 1
Next i
Text2.Text =" Str(" ta)
Text3.Text = Str(tb)
End sub
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
2.D
3.C
4.B
5.B
6.A
7.B
8.C
9.B
10.C
11.A
12.A
13.D
14.B
15.B
16.① a(i)="Int(100" * Rnd + 1)或a(i) =" Int(100" * Rnd() + 1)
② a(i)>a(j)或a(i)> = a(j)或a(j)<a(i)或a(j)<=a(i)
17.①gys(a, b) ②gys = m
18.(1)sum =" sum" + i (2)Text2.Text = Str(sum)
19. 辗转法 重复 结果 初始值
20.(1)3(1分) Caption(1分)
(2)x(1分) val(s) mod 2 =1(1分)
21.if x<10 then
y=0
else
if x<50 then
y=2+1.5*x
else
y=2/3/x
end if
22.(1)Caption
(2)form1.caption
(3)len(s)
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$