内容正文:
3.3 简单算法及其程序实现
一、选择题
1.关于python语句功能描述正确的( )
A.ord(chr(x)+26) #若字符变量x是大写字母即变成小写字母
B.str(x)+str(y) #求两数之和
C."abcd"[2:4] #运行结果为"bcd"
D.2**3*2/2 % 5 #结果3
2.用火柴棍拼数字,各数字的拼法如下图所示,10根火柴棍(可以剩余)能拼成的最大两位数是( )
A.87 B.94 C.97 D.98
3.在解析法中,哪个方法不适用于求解积分( )
A.辛普森法则 B.梯形法则 C.蒙特卡洛方法 D.高斯求积法
4.—位顾客去超市购买了苹果xkg、香蕉ykg、西瓜ykg,其中苹果3.98元/kg、香蕉3.58 元/kg、西瓜2.98元/kg。计算该顾客消费总价的算法如下:
①输入三种水果的重量x,y,z ②用公式计算总价s=3.98x +3.58y +2.98z ③输出总价s ④结束
上述算法属于( )
A.枚举算法 B.查找算法 C.递归算法 D.解析算法
5.智慧饮料瓶回收机器的工作流程为:机器通过身份卡或人脸识别对用户进行身份认证,身份识别后用户可投放饮料瓶,机器对当前饮料瓶进行判断,符合回收条件则按塑料瓶和铝制易拉罐进行分类,塑料瓶按容量计算金额,铝制易拉罐按重量计算金额,若不符合回收条件则退回,结束投瓶后机器统计饮料瓶个数和金额,并将回收数据通过网络传送至服务器。用Python语句描述塑料瓶容量500毫升以下(不包含)0.05元/个,500毫升到1200毫升(不包含)0.1元/个,1200毫升及以上0.15元/个。设容量为v(单位为毫升),价格为p(单位为元),则下列选项正确的是( )
A.p=0.05
if v>=500:
p=0.1
elif v>=1200:
p=0.15
B.p=0.15
if v<500:
p=0.05
elif v<1200:
p=0.1
C.p=0.05
if v>=500:
p=0.1
if v>=1200:
p=0.15
D.p=0.15
if v<1200:
p=0.1
else:
p=0.05
A.A B.B C.C D.D
6.什么是循环结构( )
A.程序中重复执行的一段代码 B.程序中随机执行的代码
C.程序中只在特定条件下执行的代码 D.程序中顺序执行的代码
7.哈希表在非数值计算中的应用主要是( )
A.加快数值计算速度 B.实现数据快速查找
C.优化数据存储结构 D.增强数据安全性
8.在解析算法时,我们通常需要关注算法的( )
A.实现难度 B.可维护性 C.可测试性 D.以上都是
9.在解析算法时,我们通常首先关注算法的( )
A.效率 B.正确性 C.可读性 D.可扩展性
10.有如下程序段:
a = 3; b = 4; c = 5
a = a * b
a = a % c
c = c // b
print(a + c)
运行之后,输出结果为( )
A.2 1 B.3 C.3 1 D.4
11.以下哪个问题可以用枚举法来求解( )
A.找出100以内同时被5和7整除的所有数
B.给定直角三角形两条边的长,求第三条边的长
C.求两个数的积
D.给定半径,求圆的面积
12.某算法的流程图如图所示,若输入的n值为10987654321,则下列说法正确的是( )
A.该算法中包含两个循环结构 B.执行该流程后,输出的s值为30
C.语句“n>0?”与“r%2=0?”执行的次数相同 D.执行该流程后,变量r的值为1
13.程序的三种基本结构为( )
A.顺序结构、树形结构和选择结构
B.网状结构、顺序结构和选择结构
C.顺序结构、选择结构和循环结构
D.网状结构、循环结构和树形结构
14.什么是分治算法( )
A.一种将问题分解为更小、更容易解决的子问题的算法 B.一种只解决大问题的算法
C.一种不使用递归的算法 D.一种随机选择解的算法
15.以下Python程序运行结果为( )
i=1
while i<=5:
print(" "*(5-i),"∗"*i)
i=i+1
A. ∗
∗∗
∗∗∗
∗∗∗∗
∗∗∗∗∗
B.∗
∗ ∗
∗ ∗ ∗
∗ ∗ ∗ ∗
∗ ∗ ∗ ∗ ∗
C. ∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗
∗ ∗ ∗
∗ ∗
∗
D.∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗
∗ ∗ ∗
∗ ∗
∗
A.A B.B C.C D.D
16.在算法执行过程中,用于立即终止当前循环并跳出循环体的语句是( )
A.break B.continue C.return D.exit
17.有如下 Python程序段:
s=''AB18/31C5/D269/E7''
k=3
sum, j,c=0,0,0
flag=False
for ch in s:
if "0"<=ch<="9":
c=c*10+int(ch)
j+=1
elif ''A''<=ch<=''Z'':
flag=True
else:
if j==k and flag:
sum+=c
flag=False
j=0;c=0
程序运行后,sum的值是( )
A.269 B.330 C.584 D.609
二、填空题
18.解析法在算法实现中的局限性包括 。
19.动态规划算法适用于解决具有 、最优子结构和递推关系的问题。
20.动态规划通常用于解决具有 和 特点的问题。
21.有Python程序代码如下:
n=int(input("请输入一个整数n:"))
if n < 0 :
s = 0
elif n < 16 :
s = n ** 3
else :
s = n * n ** 2
print(s)
若要测试所有分支程序代码是否正确,请列举一组合适的数据
22.阅读下列程序,写出运行结果
s = 1
for i in range(1,10,3):
s = s *iprint(s)
运行输出结果是:
三、判断题
23.用自然语言来描述算法,比用流程图来描述算法更清晰、简洁。( )
24.下列程序段中,赋值语句s=s+i被重复执行了4次。
s=0
For i in range(3,10,2):
s=s+i ( )
四、操作题
25.已知一个算法, 程序段和流程图如下图,把程序段补充完整。
s=0
for i=1 to ①
s= ②
next ③
print “s=”; s
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查表达式的运算。A选项,会导致类型错误。B选项,字符拼接,非求和。C选项,结果为“cd”。D选项正确,结果为3。故正确答案为选项D。
2.C
【详解】本题考查算法相关内容。由图可知,要想两位数最大,首先十位上要尽可能大,选9,用去6根火柴棍,剩下4根,个位可以选7,最大是97。故本题答案是C选项。
3.C
【详解】本题考查解析法的应用。解析法是指通过解析表达式直接求解积分的方法。辛普森法则、梯形法则和高斯求积法都是数值积分的方法,适用于解析法。而蒙特卡洛方法是一种统计方法,通常用于高维积分和复杂积分问题,不属于解析法的范畴。因此,蒙特卡洛方法不适用于解析法求解积分。故选C。
4.D
【详解】本题考查算法。上述算法是根据已知的价格和购买的重量,通过明确的数学公式来计算总价,这种通过数学表达式来解决问题的算法属于解析算法。枚举算法是一一列举所有可能的情况来求解问题;查找算法是在一组数据中查找特定元素;递归算法是函数在其定义中直接或间接调用自身。而本题中是利用数学公式直接计算得出结果,所以属于解析算法。故答案为:D。
5.BC
【详解】本题考查程序分析。
A选项,当v>1200时,结果为p=0.1,不符合题意;D选项,当v<500时,结果为p=0.1,不合题意。故选择BC。
6.A
【详解】本题考查循环结构。循环结构是指程序中能够重复执行的一段代码。通过设定一定的条件,当条件满足时,这段代码就会不断地重复执行,直到条件不再满足为止。故答案为:A。
7.B
【详解】本题考查哈希表的描述。哈希表的主要特点是通过哈希函数将键值映射到表中的一个位置,从而实现快速查找。因此,哈希表在非数值计算中的主要应用是实现数据的快速查找。选项A、C和D虽然也涉及数据处理,但并不是哈希表在非数值计算中的主要应用。故选B。
8.D
【详解】本题考查的是算法相关知识。解析算法时,我们通常需要关注算法的实现难度、可维护性、可测试性等方面。故选D。
9.B
【详解】本题考查的是算法相关知识。验证算法是否能够在所有可能的输入情况下都能得到正确的输出。这是算法设计的基本要求。故本题应选B。
10.B
【详解】本题考查的是Python顺序语句。*表示乘,%表示求余,//取整。a = 3; b = 4; c = 5,a = a * b=12,a = a % c=12%5=2,c = c // b=5//4=1,a + c=2+1=3。故选B。
11.A
【详解】本题考查的是枚举法相关知识。枚举算法通过列举问题所有可能的解,并逐一检查每个解是否满足问题的条件。故选项A正确。
12.D
【详解】本题考查的是流程图识读。该算法中包含一个循环结构;该算法的功能是将输入的n值中,数位上为偶数累加到s中,n值为10987654321,s=2+4+6+8+0=20;语句“n>0?”比“r%2=0?”执行多执行1次;r表示是n值中个位、十位……的数字,故执行该流程后,变量r的值为1。本题应选D。
13.C
【详解】本题考查程序基本结构相关内容。程序的三种基本结构:1、顺序结构,程序中各个操作按照在源代码中的排列顺序,自上而下,依次执行;2、选择结构,根据某个特定的条件进行判断后,选择其中一支执行;3、循环结构,在程序中需要反复执行某个或某些操作,直到条件成立或不成立时才停止循环。故本题答案是C选项。
14.A
【详解】本题考查分治算法。分治算法通过递归地将大问题分解为更小的子问题来解决原始问题,然后合并这些子问题的解以得到原始问题的解。故答案为:A。
15.A
【详解】本题考查的是Python循环语句。i依次从1取到5,由" "*(5-i)可知,空格依次是4到0个,由"∗"*i可知,"∗"依次是1到5个。故选A。
16.A
【详解】本题考查循环结构。在算法的循环结构中,break语句的作用是立即终止当前循环,并跳出整个循环体,不再执行该循环中后续的代码。continue语句是跳过当前循环的剩余部分,直接进行下一次循环的条件判断。return语句用于从函数中返回值并结束函数的执行。exit通常用于终止整个程序的执行。故答案为:A。
17.C
【详解】本题考查的是Python程序调试与运行。阅读程序可知,逐个读取字符串中的字符,如果是数字则转换为数值类型;如果是大写字母,则标志位flag为真;如果不是大写字母也不是数字且标志位flag为真同时是三位数字,则将数字累加到sum,标志位flag为假,数字及个数初始为0。s=“AB18/31C5/D269/E7”,
读取到第一个“/”时,由于数字不满足三个标志位flag为假,数字及个数初始为0;
读取到第二个“/”时,由于数字为315满足三个,标志位flag为真(读取大写字母C),则将数字累加到sum=315;
读取到第三个个“/”时,由于数字为269满足三个,标志位flag为真(读取大写字母D),则将数字累加到sum=315+269=584。
后续数字不会满足三个,不会累加sum,故选C。
18.问题依赖性
【详解】本题考查解析法的描述。解析法的局限性在于它强烈依赖于问题本身是否可以通过数学公式或方程来描述。
19.重叠子问题
【详解】本题考查动态规划。动态规划算法通常用于解决具有特定性质的问题。“重叠子问题”指在问题的求解过程中,会多次重复出现相同的子问题。“最优子结构”意味着问题的最优解可以由子问题的最优解组合得到。“递推关系”则是能够通过已知的子问题的解逐步推导出原问题的解。当一个问题同时具备这些特征时,使用动态规划算法可以避免重复计算重叠子问题,从而提高求解效率。例如在计算斐波那契数列时,存在大量的重叠子问题,使用动态规划可以显著提高计算效率。故答案为:重叠子问题。
20. 重叠子问题 最优子结构
【详解】本题考查动态规划。动态规划适用于具有重叠子问题和最优子结构特点的问题,通过将问题分解为子问题并存储子问题的解来避免重复计算。故答案为:重叠子问题、最优子结构。
21. -1,15,16 或其他等价答案
【详解】本题考查的是Python多分支语句。阅读程序可知,程序由三个分支:小于0、大于等于0小于16、大于等于16。故测试数据可以是:-1,15,16 或其他等价答案。
22.28
【详解】本题考查的是Python循环语句及range函数。range()函数格式:range(起始值,结束值,步长)。注意:结束值不包含;步长可省略,默认为1。range(1,10,3)生成的是列表[1,4,7]。故s=1*1*4*7=28。
23.错
【详解】本题考查的是算法描述。流程图是一种传统的算法表示法,它用一些图框来代表各种不同性质的操作,用流程线来指示算法的执行方向。由于它直观形象,易于理解,所以应用广泛,特别是在语言发展的早期阶段,只有通过流程图才能简明地表述算法。故题干中的说法是错误的。
24.正确
【详解】本题考查的是Python的range函数。range(start, stop [,step]) ;start 指的是计数起始值,默认是 0;stop 指的是计数结束值,但不包括 stop ;step 是步长,默认为 1,不可以为 0 。range() 方法生成一段左闭右开的整数范围。range(3,10,2)生成的列表为[3,5,7,9],故题干中的说法正确。
25. 9 s+1 i
【详解】本题考查VB算法及程序实现相关内容。观察流程图可知,该算法重复9次执行s=s+1(9个1的和)。由流程图内初值i=1及菱形框内i<=9得知,循环共执行9次,①处应填写:9;由流程图内s=s+1得知,循环体内有s=s+1,故②处应填写:s+1;由流程图内i=i+1得知,循环变量每次递增1,故③处应填写:i。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$