内容正文:
2023-2024学年高一上学期选修一第三单元第三节 穷举与问题解决
一、选择题
1.【加试题】有如下程序段:
For i = 2 To 6
For j = 1 To i - 1
If a(j) <= a(i) And d(j) >= d(i) Then
d(i) =d(j)+1 : pre(i) = j
End If
Next j
Next i
max = 0 : k = 0
For i = 1 To 6
If d(i)>max Then max = d(i) : k = i
Next i
Do While k <> 0
st = a(k) & ","& st
k=pre(k)
Loop
Text1.Text = Mid(st, 1, Len(st) - 1)
数组元素a(1)到a(6)的值依次为“2,6,5,9,8,8”,数组d各元素的值初始化为1,数组pre各元素的值初始化为0,经过该程序段“加工”后,Text1中的值是( )
A.2,5,9 B.2,6,8,8 C.2,5,8,8 D.2,5,6,8,8,9
2.A班一组同学的英语成绩分别为24、27、16、15、24、18,下列采用排序算法及第二遍的排序结果分别为( )
原始数据
24
27
16
15
24
18
第一遍
27
24
16
15
24
18
第二遍
第三遍
27
24
24
15
16
18
第四遍
27
24
24
18
16
15
第五遍
27
24
24
18
16
15
A.冒泡排序,27 24 16 15 24 18 B.冒泡排序,27 24 18 16 15 24
C.选择排序,27 24 16 15 24 18 D.选择排序,27 24 18 16 15 24
3.有三个杯子,其中A杯盛水,B杯盛醋,C杯为空杯。要求将A杯中的水倒入B杯,B杯中的醋倒入A杯,则解决这个问题的算法是( )。
①B!A ②A!B ③C!B ④B!C ⑤A!C ⑥C!A
A.①②③ B.③②①
C.③⑤④ D.⑥②④
4.小李有一被污损的保修卡(如图),客服热线中有一个数字被污损掉了,找出这个数字的适合算法是( )
A.枚举算法 B.解析算法
C.对分查找算法 D.递归算法
5.下列语句用于计算“s=1+4+7+10+…+25”的值。
①For i=1 To 25 Step 3 ②Next i ③s=0 ④s=s+i
正确的语句顺序是( )
A.①②③④ B.①③④②
C.③①④② D.④③①②
6.编写VB程序,实现如下功能:在文本框Text1中输入一个大于1000的正整数,单击按钮Command1后会去除其中3个数字,保证余下的数字在不改变顺序的情况下其数值最大,然后在文本框Text2中输出该数。
Private Sub Command1_Click()
Dim s As string
Dim n As Integer,w As Integer
s=Text1.Text
For i=1 To 3
n=Len(s):w=1
For j=2 To n
If ________ Then w=j Else Exit For
Next j
s=Mid(s,1,w-1)+Mid(s,w+l,n-w)
Next i
Text2.Text=s
End Sub
画线处的正确代码为( )
A.Val(Mid(s,w,1))<=Val(Mid(s,j,1))
B.Val(Mid(s,j,1))<=Val(Mid(s,j+1,1))
C.Val(Mid(s,w,1))>=Val(Mid(s,j,1))
D.Val(Mid(s,j,1))>=Val(Mid(s,j+1,1))
7.逻辑运算符 And 在计算数值时是转换为二进制数后按位进行与运算,计算规则是:1 And 1 = 1,1 And 0 = 0,0 And 1 = 0,0 And 0 = 0,例如 7 转换为二进制数 00000111,12 转换 为二进制为 00001100,因此 7 And 12 的结果为 4。有如下 VB 程序段:
Private Sub Command1_Click()
n = 0
For i = 1 To 31 k = i
t = 0
Do While k > 0
k = k And (k - 1)
t = t + 1
Loop
If t = 3 Then n = n + 1
Next i
Label1.Caption = Str(n)
End Sub
单击命令按钮 Command1,标签 Label1 中显示的结果为
A.6 B.8 C.10 D.12
8.下列问题适合使用枚举算法解决的是()
A.计算已知半径的圆面积 B.计程车计费
C.校园歌曲大赛的成绩排名 D.找出1000以内的所有素数
9.国内特快专递每200克为一个计费单位,200克以内22元,200克以上每续重200克(不足200克以200克计算)8元,现在要编写一个程序输入包裹重量自动计算出价格。解决上述问题,最合适的算法是( )
A.解析算法 B.枚举算法 C.排序算法 D.递归算法
10.如果一个4位数恰好等于它的各位数字的4次方和,则这个数被称为“玫瑰花”数。例如1634就是一个玫瑰花数:1634=14+64+34+44。如果要求出所有的玫瑰花数,下列算法合适的是( )
A.查找法 B.解析法
C.穷举法 D.排序法
11.采用盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不合要求的,保留那些合乎要求的结果,这种方法叫作( )。
A.递推法 B.穷举法 C.选择法 D.解析法
12.有如下 VB 程序段:
str1 = Text1.Text :len1 = Len(str1)
i = 0
Do While i <= len1
m = 0 : c = Mid(str1, i, 1)
Do While c <> ","
m = m * 10 + Val(c)
i = i + 1
c = Mid(str1, i, 1)
Loop
i = i + 1
If m Mod 3 = 0 Then n = n + 1
Loop
Label1.Caption = Str(n)
在文本框 Text1 中输入“123,35,43,23,56,78,132, ”,单击命令按钮 Command1 运行程序, 则在 Label1 中显示的结果为( )
A.2 B.3 C.4 D.5
13.列出所有可能的情况,逐个判断有哪些符合问题所要求的条件,从而解决问题,这是( )思路
A.递归算法 B.顺序查找算法 C.穷举法 D.解析法
14.数组a中存放了某校田径运动会中八名100米短跑运动员的成绩,数据存放情况如下表:
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
a(8)
12.8
13.3
12.3
12.6
13.5
12.1
13
13.8
若按升序排列,并采用冒泡排序算法自右向左进行比较和交换,那么前两轮排序的数据交换总次
数为( )。
A.5 B.6 C.7 D.8
15.下表记录了7个数据的冒泡排序过程,分析表中数据可以得知采用升序的方式,要经历多少次数据比较( )
原始数据
3
98
8
88
5
78
28
第1遍
3
5
98
8
88
78
28
第2遍
3
5
8
98
88
78
28
…
…
…
…
…
…
…
…
A.6 B.7 C.21 D.36
二、填空题
16.现需计算1*2*3*……*n=?有如下程序段,在划线处填入合适的语句或表达式,完成程序。
s=1
i=1
Do While i<=n
S =" s" * i
i =" i" + 1
17.请认真阅读并分析下面Visual Basic程序代码,按要求完成题目。
Dim a(1 To 6) As Integer
Dim n, i, j, k As Integer
Private Sub Command1_Click()
For i =" 1" To n - 1
For j = (1) To n
If a(i) < a(j) Then
k = a(i): (2) : a(j) = k
End If
Next j
Next i
For i =" 1" To n
list2.AddItem Str(a(i))
Next I
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii =" 13" Then
n =" n" + 1
a(n) = Val( (3) )
List1.AddItem Str(a(n))
Text1.Text = "": Text1.SetFocus
End If
End Sub
①程序中出现了text和list两种控件,其中list控件的中文名称是列表框,text控件的中文名称是 。
(2)在上述程序段中3处带序号的空白地方补充恰当的语句,完善程序。
18.下面程序的功能是:计算表达式1+3+5+…+(2n-1)的值,在文本框Text1中输入n的值,结果在文本框Text2中输出。则程序中划线处的语句应填____________。
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
Next i
Text2.Text=Str(sum)
End Sub
19.《孙子算经》中有一个“物不知其数”的问题,某数以3除余2,以5除余3,以7 除余 2。下面的 VB 程序用于求 1000 以内满足该条件的自然数及个数,请在程序划线处应填入合适的表达式。
Private Sub Command1_Click()
Dim c As Integer, n As Integer c = 0 : n = 9
Do While n <= 1000
If n Mod 3 = 2 And n Mod 5 = 3 Then
List1.AddItem Str(n)
c =
End If
n =
Loop
Label1.Caption = "1000 以内满足条件的数有" & Str(c)& "个"
End Sub
20.流程图是实现输出1-100之间所有能被 7整除的整数。若再要统计其个数,则要设置一个计数器c, c = 0,如图所示,则计数器c=c+1应置于编号 处。
三、操作题
21.【加试题】火柴棒等式。用火柴棒可以摆出0-9的数字,摆放规则如下图所示:
有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:
(1)A、B都是不大于1000的正整数,若数值非零,则最高位不能是0
(2)摆放“+”与“=”各使用两根火柴棒
(3)A+B=C 与 B+A=C 视为相同的等式
(4)n根火柴棒必须全部用上
小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。
(1)请在划线处填入合适的代码。① ,② ,③ ;
(2)某次运行程序时,显示的等式中包含“7+17=24”,根据程序分析,输入的n的值为: 。
Dim sz(0 To 9) As Integer ’数组元素sz(i)用于存储数字i所使用的火柴棒的数量
Private Sub Form_Load()
sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4
sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6End Sub
‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量
Function hcs(ByVal x As Integer) As Integer
Dim s As Integer,k as integer
s = 0
Do While ①
k = x Mod 10
s=s+sz(k)
x = x \ 10
Loop
hcs = s + sz(x)
End Function
Private Sub Command1_Click()
Dim n As Integer
Dim a As Integer, b As Integer, c As Integer
n = Val(Text1.Text)
ans = 0
List1.Clear
For a = 0 To 999
For b = ② To 999
c = a + b
If ③ Then
List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))
ans = ans + 1
End If
Next b
Next a
List1.AddItem ("共有" + Str(ans) + "种等式")
End Sub
22.如果一个整数是另一个整数的平方,则称该数是“完全平方数”。如:1=1×1,4=2×2,9=3×3,所以1、4、9是完全平方数。编写程序,统计100到10000之间的所有完全平方数的和。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
2.C
3.D
4.A
5.C
6.C
7.C
8.D
9.A
10.C
11.B
12.B
13.C
14.D
15.C
16.Loop
17.①文本框 (1)i+1 (2)a(i) = a(j) (3)text1.text
18.sum=sum+i
19. c+1 或 等同表达式 n+7 或 等同表达式
20.2
21. x>=10 a hcs(a)+hcs(b)+hcs(c)=n-4 21
22.sum = 0
for i=10 to 100
sum =sum+ i*i
next
print sum
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$