内容正文:
2.4 常见算法的程序实现2024—2025学年高中信息技术人教/中图版(2019)必修1
一、选择题
1.水仙花数是指一个三位数,它的每个位上数字的3次方之和等于它本身,现要求出所有三位的水仙花数,下列算法最合适的是( )
A.二分法 B.解析法 C.迭代法 D.枚举法
2.用于求变量s值的算法如下:
①变量s的初值是0,变量n的初值是1;②若变量n的值大于100,则转到步骤⑤;
③;④n的值增加1,转到步骤②;
⑤输出s的值;⑥结束。
下列数学表达式中,其计算结果与上述算法执行后变量s的值相等的是( )
A. B.
C. D.
3.x和n都是正整数且x<=n,下列选项中,与语句“x=x Mod n +1 ”功能相同的是( )
A.x=(x+1) Mod n
B.x=x+1
If x=n Then x=1
C.x=x+1
If x=n+1 Then x=1
D.x=x+1
If x=n+1 Then x=0
4.编程输出1到100之间所有的偶数,下列算法最合适的是( )
A.穷举法 B.冒泡排序法 C.二分查找法 D.插入排序法
5.有如下 VB 程序段:
a(0) = 0 i = 1
Do While i <= 6
a(i) = Int(Rnd * 5) * 2 + 1
If Not flag(a(i)) Or a(i) > a(i - 1) Then
flag(a(i)) = True
i = i + 1
End If
Loop
已知数组 flag 各元素的初值为 False,该程序段运行后,数组元素 a(1)到 a(6)的值可能为( )
A.5,1,7,4,9,3 B.7,5,9,5,3,1 C.1,5,9,3,5,9 D.3,5,9,7,7,1
6.假定公鸡每只5元,母鸡每只3元,小鸡每只5角,每种鸡都要买,现有100元,要买100只鸡,间有多少种方案(百钱买百鸡),求解这个问题,最适合的算法是( )
A.递归法 B.选代法 C.穷举法 D.解析法
7.小明同学用等差数列求和公式解决了1+2+3+……+N的问题。这是用( )解决问题。
A.解析法 B.枚举法 C.模拟法 D.递推法
8.VB 表达式Int(Rnd*9)+54\3^2/3的值可能是( )
A.9 B.16 C.19 D.27
9.课堂上老师给出题目:查找1000以内所有能被13整除并且末尾是5的自然数。下列算法最合适的是( )
A.查找法 B.排序法 C.解析法 D.枚举法
10.有如下程序段:
Dim s(1 To 81) As Integer, i As Integer, j As Integer, c As Integer, temp As Integer
c=0 : s(1) = 0
For i = 1 To 9
For j = 1 To i
temp = s(j * i)
s(j * i) = j * i
If temp <> s(j * i) And s(j * i) Mod 9 = 0 Then c = c + 1
Next j
Next i
该程序段运行后,变量 C 的值为( )
A.9 B.10 C.11 D.12
11.下列生活中的问题不适合用枚举算法解决的是( )
A.在一串相同的钥匙中找到所有能开启某扇门的钥匙 B.科代表将混在一起的作业本按不同学科分类
C.计算全班50个同学的平均分 D.找回三位数密码箱的密码
12.小李在解决“查找50以内能被7整除的数”时,将50以内能被7整除的数列举出来:7,14,21,28,35,42,49,他主要采用了( )来解决问题
A.枚举法 B.解析法 C.递归法 D.分治法
13.以下适合使用解析算法求解的问题是( )。
A.求正整数n所有约数的和
B.已知一元二次方程的三个系数,求方程的解
C.已知两个整数a和b,求它们的最大公约数
D.找出一筐乒乓球中质量不符合标准的球
14.哥德巴赫猜想提出,任何一个不小于6的偶数都可以表示成两个素数之和,请编写程序,输入任意一个大于等于6的偶数,输出所有其等于两个素数之和的式子。例如: 6=3+3; 18=5+13, 18=7+11。
判断一个正整数是否为素数,可以通过在一定范围内逐一查找此数是否能被1和本身以外的其他因子整除来验证,如此采用的算法是( )
A.迭代法 B.解析法 C.二分法 D.枚举法
15.mn(m、n均为正整数,且m、n均大于1)可以分解成m项公差为2的等差数列,该数列各项之和与mn等值。程序界面如图所示,实现该功能的VB程序段如下:
m = Val(Text1.Text)
n = Val(Text2.Text)
s = ""
x = (1)
For i = 1 To m
s = s + Str(x) If (2) Then s = s & " +"
x = x + 2
Next i
Label1.Caption = Str(m) + " ^" + Str(n) + " =" + s
上述程序段中方框处可选语句为:
①m ^ (n - 1) - m + 1 ②m ^ (n - 1) - n + 1
③i < m ④i = m
则(1)(2)处填入的语句依次为( )
A.①③ B.①④ C.②③ D.②④
16.已知三角形的三边长,求计算三角形的面积。解决此问题的算法各个步骤如下所示:
①确定面积的计算公式并用数学符号描述;
②设计算法,并通过编写计算机程序描述实现;
③提炼核心要素并加以假设(假设三角形的三条边长度分别为a、b、c);
上述步骤的正确顺序是( )
A.①②③ B.①③② C.③①② D.③②①
17.《算经》中的百钱百鸡问题:用100文钱买100只鸡,其鸡翁一、值钱五,鸡母一、值钱三,鸡雏三、值钱一,问鸡翁、鸡母、鸡雏各几何。下列选项中解决此问题的最优的算法是( )
A.枚举算法 B.归并算法 C.递归算法 D.排序算法
18.解决“百鸡百钱”问题,比较恰当的算法是( )
A.递推 B.递归 C.穷举 D.分治
19.数学中有斐波那契数列,现已知前8项是1,1,2,3,5,8,13,21,设计如下VB程序求第n项的值:
Dim a(1 to 1000)as long,n as integer
n=Val(text1.text)
a(1)=1:a(2)=1
For i="3" to n
a(i)=a(i-1)+a(i-2)
Next i
Label1.caption ="斐波那契的第"&str(n)&"是"&a(n)
该程序用到下列哪种算法?
A.枚举算法 B.解析算法 C.排序算法 D.查找算法
20.如果一个3位整数恰好等于它各位上的数字的立方和,则则这个3位数称为“水仙花”数,例如153=13+53+33。如果要求出所有的水仙花数,下列算法最合适的是( )
A.排序法 B.解析法 C.查找法 D.穷举法
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题主要考查枚举算法。水仙花数是指一个三位数,它的每个位上数字的3次方之和等于它本身,现要求出所有三位的水仙花数,可以通过枚举所有可能找出,故本题选D选项。
2.B
【详解】本题主要考查算法及其实现。分析算法可知,该程序变量n的范围是从1到100,当n是奇数时执行s=s+n,当n是偶数时,执行s=s-n,即奇数位相加,偶数位相减,故1−2+3−4+⋯⋯−100计算结果与上述算法执行后变量s的值相等,故本题选B选项。
3.C
【详解】本题考查赋值语句,VB运算。题干x=x Mod n +1,有两种情况。(1)x<n,则x=x+1。(2)x=n,则x=1。结合选项判断。选项A,当x=n-1时候,A选项的结果是x=0,故有误。选项B,首先进行x=x+1,故接下来的判断实际上是x+1和n的判断,若x+1=n,则x=1,有误。选项C正确。选项D,当x和n相等时,x应该是1,故选项D有误。本题选项C为正确选项。
4.A
【详解】本题考查算法相关内容。穷举法是指在算法中采用搜索的方法,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的结果,保留那些符合要求的结果。冒泡算法是通过对待排序的序列从前向后依次比较相邻元素的值,如果发现逆序则交换。二分查找法是一种在有序数组中查找某一特定元素的搜索算法。插入排序法的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。分析题意,穷举法可以解决该问题。故本题答案是A选项。
5.C
【详解】本题考查VB程序相关的知识点
由语句“a(i)=Int(Rnd*5)*2+1”可知产生的随机数为1、3、5、7、9,故排除A选项。条件Not flag(a(i))表示数组元素a(i)未产生,a(i)>a(i-1)表示a(i)与前一个数形成升序,则a(i)能保留,否则重新生成随机数。B选项a(4)=5时,两个条件都不能满足。D选项a(5)=7时,两个条件都不能满足。
6.C
【详解】本题考查的是穷举法。穷举法也叫枚举法,将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃。百钱买百鸡,求解这个问题,最适合的算法是穷举法,选项C正确。
7.A
【详解】本题主要考查解析法的描述。解析法是应用解析式去求解数学模型的方法。小明同学用等差数列求和公式解决了1+2+3+……+N的问题,这是用解析法解决问题,故本题选A选项。
8.C
【详解】本题考查VB运算。Int(Rnd*9)+54\3^2/3,根据优先级,54\3^2/3这一部分得到的结果为18,Int(Rnd*9)结果为0-8的随机整数,故得到的值应该是18-26之间。所以选C。
9.D
【详解】本题主要考查枚举算法。查找1000以内所有能被13整除并且末尾是5的自然数,可以使用枚举法枚举所有的可能,故本题选D选项。
10.A
【详解】本题考查数组、循环嵌套和枚举算法。外层共9次循环,第一次循环,s(j * i)=1*1=1;第二次循环,内层循环执行两次,s(j * i)的值分别为2、4;……;依次类推枚举s(j * i)的值如下图:
temp <> s(j * i) And s(j * i) Mod 9 = 0 temp 记录的是 s(j * i)上一次被赋值的量,只有当上一次未被赋值,且能被 9 整除时 C 才能自增 1,因此由表中能被 9 整除的项总计 12 个,有 3 项重复,因此答案为 9 个。最后一行数据为 9 的 1,2,3,4……9 的倍数的枚举,涵盖了表中所有能被 9 整除的情况,由此也能直接得出结论 C 为 9, 选项A正确
11.C
【详解】本题考查枚举算法。枚举就是将问题的可能解一个个列举出来,逐一判断,即使中途找到符合条件的解也要继续找下去,将所有的可能都找完才结束。计算全班50个同学的平均分适合用解析算法。故选C。
12.A
【详解】本题主要考查枚举法。小李在解决“查找50以内能被7整除的数”时,将50以内能被7整除的数列举出来:7,14,21,28,35,42,49,他主要采用了枚举法来解决问题,即穷举所有的可能,故本题选A选项。
13.B
【详解】本题考查的是解析算法相关知识。解析法是指用解析的方法找出表示问题的前提条件与结果之间关系的数学表达式。故本题应选B。
【点睛】
14.D
【详解】本题考查的是算法。递归算法:是一种直接或者间接地调用自身的算法。二分査找就是折半查找;解析法是指用解析的方法找出表示问题的前提条件与结果之间关系的数学表达式,并通过表达式的计算来实现问题求解;枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案。判断一个正整数是否为素数,可以通过在一定范围内逐一查找此数是否能被1和本身以外的其他因子整除来验证,如此采用的算法是枚举法,故本题应选D。
15.A
【详解】本题主要考查解析算法程序实现。该程序考查m^n可以分解成m项公差为2的等差数列,其中该等差数列起始项为m ^ (n - 1) - m + 1,当i < m 时,该数列元素均自增2,因此A选项正确。
【点睛】
16.C
【详解】本题主要考查算法解决问题的步骤。正确的步骤是(首先是设计算法前的准备工作,然后是设计算法、编写程序):③提炼核心要素并加以假设(假设三角形的三条边长度分别为a、b、c)①确定面积的计算公式并用数学符号描述②设计算法,并通过编写计算机程序描述实现,故本题选C选项。
17.A
【详解】本题考查枚举算法的应用。分析题干,可知可以采用枚举算法枚举所有的可能情况来解决问题。故选A。
18.C
【详解】本题考查算法相关内容。递推是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果。递归法是一种通过重复将问题分解为同类的子问题而解决问题的方法。穷举算法是指在算法中采用搜索的方法,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的结果,保留那些符合要求的结果。分治法就是将一个复杂的大问题分解成两个或者更多相同或者相似的子问题,再把子问题继续拆分成更小的子问题,直到子问题可以直接求解,然后原问题的解就是子问题的解的合并。解决“百鸡百钱”问题,比较恰当的算法是穷举。故本题答案是C选项。
19.B
【详解】本题主要考查VB程序及算法。分析VB程序可知,i项的值为a(i)=a(i-1)+a(i-2),故该程序用到解析算法,故本题选B选项。
20.D
【详解】本题考查的是穷举法。穷举法又叫枚举法,将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃。例如:找出1到100之间的素数,需要将1到100之间的所有整数进行判断。本题找三位数中的水仙花数,也是最适合穷举法,选项D正确。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$