内容正文:
3.3 简单算法及其程序实现
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.有如下程序段
a=[1,3,5,7,9]
x=6
for i in range(3,1,-1):
a[i+1]=a[i]
a[3]=x
#则程序执行后,a 的值为( ):
A.[1,3,5,7,7] B.[1,3,5,5,7] C.[1,3,5,6,7] D.[1,3,5,6,9]
2.有如下Python程序段:
import random
s='Python2024'; ans="
k=random.choice([-1,1]) #随机生成-1或1
for ch in s:
key=random.randint(1,3)
if 'A'<=ch<='Z':
ans+=chr((ord(ch)+k*key-65)%26+65)
elif '0'<=ch<='9':
ans+= chr((ord(ch)+k*key-48)%10+48)
else:
ans+=ch
print(ans)
执行该段程序后,输出的结果可能是( )
A.Python2024 B.Qython3111 C.Oython3935 D.Sython5145
3.Python中,分支语句使用的关键字是( )
A.if B.while C.for D.def
4.在Python中,已知A=8,则以下代码执行后输出的结果是( )
if A<=5:
print(A-5)
else:
print(A+10)
A.3 B.5 C.10 D.18
5.某算法的流程图如图所示,若输入的n值为10987654321,则下列说法正确的是( )
A.该算法中包含两个循环结构 B.执行该流程后,输出的s值为30
C.语句“n>0?”与“r%2=0?”执行的次数相同 D.执行该流程后,变量r的值为1
6.有如下 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
7.判断整数x是否奇偶的部分Python程序段如下:
if x % 2 == 0:
res = ″偶数″
else:
res = ″奇数″
下列选项中与上述语句块功能相同的是( )
A.
if x % 2 == 0:
res = ″偶数″
res = ″奇数″
B.
if x % 2 == 0:
res = ″偶数″
else x % 2 ! = 0:
res = ″奇数″
C.
res = ″奇数″
if x % 2 == 0:
res = ″偶数″
D.
if x % 2 == 0:
res = ″奇数″
if x % 2 ! = 0:
res = ″偶数″
A.A B.B C.C D.D
8.有如下Python程序段:
s = 0 ; i = 1
while :
s = s + i
i = i + 2
该程序段运行后,变量s的值等于9,则程序划线处的语句不可能的是( )
A.i < 5 B.i <= 5 C.i < 6 D.i <= 6
9.某算法的部分流程图如图所示。执行这部分流程,输入变量n的值为5,则下列说法正确的是( )
A.语句“c<=n?”共执行了4次 B.循环结束后,变量a的值为3
C.循环结束后,变量b的值为5 D.循环结束后,程序输出的值为6
10.编程输出1到100之间所有的偶数,下列算法最合适的是( )
A.穷举法 B.冒泡排序法 C.二分查找法 D.插入排序法
11.下列与数学表达式对应的python表达式,正确的是( )。
A.( - b + math. sqrt (b * b – 4 * a * c)) /a * a
B.- b + math. sqrt (b * b – 4 * a * c) /2*a
C.( -b + math. sqrt (b * 2 – 4 * a * c)) /(2 * a)
D.( -b + math. sqrt ( b * b – 4 * a * c)) / (2 * a)
12.以下不属于程序基本结构的是( )
A.层次结构 B.分支结构 C.顺序结构 D.循环结构
13.要求所有两位数质数应选择( )
A.迭代法 B.顺序法 C.二分查找法 D.穷举法
14.求三位水仙花数、鸡兔同笼、百钱百鸡、求1000以内所有的素数⋯⋯这些问题,可以用同一种类型的算法去解决,这种算法是( )
A.解析法 B.枚举法 C.递归法 D.迭代法
15.以下哪个Python代码片段可以正确实现死循环( )
A.while True: pass B.for i in range(5): pass C.while False: pass D.for i in range(-1, 5): pass
16.函数range(6,10)生成的序列中元素的个数是( )
A.3 B.4 C.5 D.6
17.将一个难以直接解决的大问题,分解成一些规模较小的同类问题,以便各个击破的算法是( )
A.递推 B.递归 C.穷举 D.分治
18.某Python程序如下:
s='A3B57e';sl=";i=0
while i<len(s):
if'A'<=s[i]<='Z':
sl=s1+chr(ord(s[i])+32)
elif'0'<=s[i]<='9':
sl=s[i]+s1
i=i+1
print(s1)
运行后输出的结果是( )
A.753abe B.a3b57 C.753AB D.753ab
19.有如下Python程序段
head=4
item=[[5,2],[7,3],[9,5],[2,-1],[1,0],[3,1]]
p=head
str1=''
while p!=-1:
str1+=str(item[p][0])+"->"
p=item[p][1]
print(str1[:-2])
运行上述程序,结果为( )
A.1->5->9->3->7->2 B.1->5->9->3->7->2->
C.1->5->9->3->7 D.1->5->9->3->7->
20.解决某问题的算法流程图如图a所示,程序代码如图b所示,两者均不完整。
图a 图b
若输入s1和s2的值分别为“012”,“121210”,结合流程图和程序代码,则输出的num的值为( )
A.3 B.5 C.7 D.11
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查的是Python循环语句。a=[1,3,5,7,9],x=6。range(3,1,-1)生成3、2系列数,故循环执行两次,a[4]=a[3]=7,a[3]=a[2]=5;跳出循环后,a[3]=x=6。故程序执行后,a的值为[1,3,5,6,7],故选C。
2.D
【详解】本题考查的是Python随机函数及循环语句。程序的功能是将大写字母统一前移或后移key(1~3)位,数字统一前移或后移key(1~3)位。选项A,大写字母没有移位,不可能;选项B,字符"20"变为"31"是前移,字符"4"变为"1"是后移,不可能一下前移一下后移;选项C,字符"P"变"O"是后移,但字符"2024"后移1~3位不可能是"3935";选项D,字符"P"变"S"是后移3位,字符"2024",分别后移3、1、2、1位变成"5145",符合程序功能。故选D。
3.A
【详解】本题考查的是Python分支语句。if是分支语句使用的关键字;while、for是循环语句使用的关键字;def是自定义函数的关键字。故选A。
4.D
【详解】本题考查的是Python选择语句。A=8,不满足A<=5,执行 print(A+10),输出8+10=18,故选D。
5.D
【详解】本题考查的是流程图识读。该算法中包含一个循环结构;该算法的功能是将输入的n值中,数位上为偶数累加到s中,n值为10987654321,s=2+4+6+8+0=20;语句“n>0?”比“r%2=0?”执行多执行1次;r表示是n值中个位、十位……的数字,故执行该流程后,变量r的值为1。本题应选D。
6.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。
7.C
【详解】本题考查的是Python选择语句。选项A在x为偶数y="奇数",与题干给的程序不符;选项B语句格式不对,else后不用写条件表达式;选项Dx为偶数y="奇数",奇数y="偶数",与题干给的程序不符。故本题应选C。
8.A
【详解】本题考查的是循环语句。由循环体可知s=1+3+5+……,要使变量s=9,则s=1+3+5,即i的值不超过6且要取到5,故循环条件为:i<=5或i<6或i <= 6,选项A正确。
9.D
【详解】本题考查流程图。
a
1
1
2
3
5
b
1
2
3
5
8
c
1
2
3
5
8
i
2
3
4
5
6
故说法正确的是选项D。
10.A
【详解】本题考查算法相关内容。穷举法是指在算法中采用搜索的方法,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的结果,保留那些符合要求的结果。冒泡算法是通过对待排序的序列从前向后依次比较相邻元素的值,如果发现逆序则交换。二分查找法是一种在有序数组中查找某一特定元素的搜索算法。插入排序法的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。分析题意,穷举法可以解决该问题。故本题答案是A选项。
11.D
【详解】本题考查的是Python表达式。sqrt()求平方根,乘法运算符为“*”,除法为“/”,嵌套函数均使用小括号。表示为( -b + math. sqrt ( b * b – 4 * a * c)) / (2 * a)。
12.A
【详解】本题考查程序基本结构。分支、顺序和循环为程序设计的基本结构。故选择A。
13.D
【详解】本题考查算法相关内容。迭代算法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。顺序查找法(也称为线性查找),是一种基本的查找算法,它的工作原理是从数据序列的第一个元素开始,逐个比较每个元素,直到找到要查找的数据,或者检查完整个数据序列。二分法是在一个有序的数据集中,把数据集分成两部分,分别进行搜索,得到满足要求的数据。枚举(穷举)算法通过列举问题所有可能的解,并逐一检查每个解是否满足问题的条件。要求所有两位数质数应选择穷举法。故本题答案是D选项。
14.B
【详解】本题考查枚举算法。
三位水仙花数:这个问题是寻找所有三位数,这些数的每个位上的数字的立方和等于它本身。例如,153是一个水仙花数,因为 13+53+33=153。为了找到这样的数,我们可以遍历所有三位数(100-999),然后对每个数进行验证。这明显是一个枚举法的应用。
鸡兔同笼:这个问题通常通过设立方程来求解,但在编程实现时,我们可能会通过枚举可能的鸡或兔的数量,然后验证是否满足题目给出的条件(如总头数和总脚数)。虽然理论上可以通过解析法求解,但在编程实践中,枚举法因其简单直观而常被采用。
百钱百鸡:这个问题是鸡兔同笼问题的一个变种,也是通过枚举公鸡、母鸡和小鸡的可能数量,然后验证是否满足题目条件(如总钱数和总鸡数)。这同样是一个枚举法的应用。
求1000以内所有的素数:虽然理论上可以通过一些数学公式或筛选法(如埃拉托斯特尼筛法)来高效地找到素数,但在简单实现或教学示例中,我们通常会通过遍历每个数,并检查它是否能被更小的数整除(除了1和它本身)来验证它是否是素数。这实际上也是一种枚举法的应用,尽管它不是最高效的方法。
故正确答案为:选项B。
15.A
【详解】本题考查Python循环。死循环是指永远不会自行结束的循环。A选项中,while True: pass,由于条件True始终为真,所以会一直执行循环体中的代码,形成死循环。B选项for i in range(5): pass,range(5)会产生0到4的序列,循环会在遍历完这个序列后自动结束,不是死循环。C选项while False: pass,条件False始终为假,不会执行循环体,不是死循环。D选项for i in range(-1, 5): pass,range(-1, 5)会产生-1到4的序列,循环会在遍历完这个序列后自动结束,不是死循环。故答案为:A。
16.B
【详解】本题考查Python函数的应用。range(start, stop,[step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0,5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0,1,2,3,4]没有5;step:步长,默认为1。range(6,10)生成:6、7、8、9共4个。故选B。
17.D
【详解】本题考查的是算法相关知识。分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决问题,最后将子问题的解组合起来形成原问题的解。故选D。
18.D
【详解】本题考查程序分析。根据代码if'A'<=s[i]<='Z':和'0'<=s[i]<='9':可知,该程序遍历字符串s,取出字母和数字,将大写字符转换成小写,将数字直接加到字符前面,存储在变量s1中,输出s1。故正确答案为选项D。
19.A
【详解】本题考查程序分析。这段代码的功能是根据给定的索引链表item和起始索引head,沿着索引链表依次输出对应的数字,直到遇到索引值为-1为止。最后,我们打印输出了str1[:-2],这里使用[:-2]是为了去掉最后的"->”。故正确答案为选项A。
20.B
【详解】本题考查流程图和程序代码分析相关内容。可以采用列表跟踪变量分析,找出规律:
初始
i=0
a
b
num=0
第1趟
1
0
1
1
第2趟
2
1
2
2
第3趟
3
2
1
第4趟
4
0
2
第5趟
5
1
1
第6趟
6
2
0
3
第7趟
7
0
1
4
第8趟
8
1
2
5
第9趟
9
2
1
第10趟
10
0
2
第11趟
11
1
1
可以看出,每循环六趟,num的值共增3;且每六趟循环,num的递增情况:1、1、0、0、0、1。故本题答案是B选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$