中小学教育资源及组卷应用平台
2024信息技术学业水平考试专题练
优化集训11 循环结构的程序实现
1.有Python程序代码如下:
x=0
for i in range(1,10,3):
x+=i
print(x)
该程序段执行后,变量x输出的值是( )
A.25 B.36
C.12 D.55
2.有Python程序代码如下:
n=int(input(″计算n!,请输入n:″))
print(n,end='!=')
fac = 1
while n > 1:
fac=fac n
n-=1
print(fac)
该程序段执行后,若输入变量n的值是4,则输出的内容是( )
A.4!=1 B.4!=24
C.4!=0 D.4!=120
3.有Python程序代码如下:
for i in range( ):
print(i,end=',')
若想按次序输出这组数据:“10,8,6,4,2,”,程序中方框处应填写的代码是( )
A.10,1,2 B.11,2,2
C.10,2,-2 D.10,0,-2
4.有Python程序代码如下:
list1=[]
for i in range(1,21):
if i%5==0:
break
list1.append(i)
print(list1)
该程序段执行后,列表list1中输出的内容是( )
A.[1,2,3,4]
B.[1,6,11,16]
C.[5,10,15,20]
D.[1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19]
5.有如下Python程序段,运行该程序,输出的结果可能的是( )
import random
n=random.randint(50,101)
a=[]
for i in range(2,n):
while n%i==0:
a+=[i]
n//=i
print(a)
A.[3,3,3,3] B.[2,2,9]
C.[55] D.[5,15]
6.有Python程序代码如下:
list1=[7,3,2,9,8,4,6]
m1 = m2 = list1[0]
for i in range(1,len(list1)):
if m1 < list1[i]:
m1 = list1[i]
elif m2 > list1[i]:
m2 = list1[i]
print(m1,m2)
执行上面程序,变量m1、m2输出结果是( )
A.9 2 B.2 9
C.7 7 D.9 9
7.有如下Python程序段:
a=[5,2,7,10,17,25,42,66]
c=0
for i in range(2,len(a)):
if a[i-1]+a[i-2]==a[i]:
c=c+1
print(c)
运行程序后,输出的内容是( )
A.2 B.3 C.6 D.7
8.有如下Python程序段:
a=[3,4,2,5,6,7,7,1,2]
m,c,i=1,1,1
while iif a[i]>=a[i-1]:
c+=1
m=max(m,c)
else:
c=1
i+=1
print(c,m)
则程序执行后,c和m的值分别是( )
A.1和5 B.1和4
C.2和5 D.2和4
9.已知部分选择题的标准答案和学生提交的作答分别存储于字符串变量“sa”和“st”,希望得到一个由布尔型常量组成的列表“result”作为系统批改的结果(答对为“True”,否则为“False”)。下列算法设计选项不正确的是( )
A.result=[False] len(sa)
for i in range(len(sa)):
if st[i]==sa[i]:
result[i]=True
B.result=[]
for i in range(len(sa)):
result.append(sa[i]==st[i])
C.result=[]
for i in range(len(sa)):
if st[i]==sa[i]:
result.append(True)
else:
result.append(False)
D.result=[]
for i in range(len(sa)):
tmp=False
if st[i]!=sa[i]:
tmp=True
result.append(tmp)
10.有Python程序代码如下:
list1 = [] ; i = 1
while i < 21:
i += 1
if i%5 != 0:
continue
list1.append(i)
print(list1)
该程序段执行后,列表list1中输出的内容是( )
A.[1,2,3,4]
B.[1,6,11,16]
C.[5,10,15,20]
D.[1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19]
11.有如下Python程序段:
a=[5,3,8,9,7,3,11]
n=len(a)-1
cnt=0
for i in range(1,n):
if a[i]==a[i+1]-a[i-1]:
cnt+=1
elif a[i]>a[i+1]-a[i-1]:
cnt+=2
else:
cnt+=3
print(cnt)
执行该程序段后,变量cnt的值为( )
A.9 B.10 C.11 D.12
12.某算法流程图如图所示,其对应的Python程序是 ( )
A.s=0
for i in range(1,101):
if i%5==0:
s=s+i
else:
i=i+2
print(s)
B.s=0;i=1
while i<=100:
if i%5==0;
s=s+i
else:
i=i+2
print(s)
C.s=0
for i in range(1,101):
if i%5==0:
s=s+i
i=i+2
print(s)
D.s=0;i=1
while i<=100:
if i%5=0;
s=s+i
i=i+2
print(s)
13.有如下的Python程序段:
n = int(input())
st =″ ″
for i in range(1,n+1):
for j in range(1,i+1,2):
st +=″ ″
print(st)
该程序运行时,输入5后,输出的内容为( )
14.某Python程序如下:
while a!=b:
if a>b:
a=a-b
else:
b=b//2
print(b)
若a,b的值分别为22和16,程序运行后输出的结果是( )
A.0 B.1
C.2 D.16
15.谁是小偷:有a,b,c,d四名犯罪嫌疑人,其中只有一人是小偷,经过审讯获得的消息如下:①a说我不是小偷;②b说c是小偷;③c说小偷肯定是d;④d说c胡说!其中有三个人说的是实话,一个人说的是假话,现编写了一个Python程序用于推断谁是小偷,代码如下:
for thief in['a','b','c','d']:
①
if thief!='a':
sum+=1
if thief=='c':
sum+=1
if thief=='d':
sum+=1
if②
sum+=1
if③
print(″小偷是″,thief)
请回答下列问题:
(1)根据以上四人的描述,真正的小偷是 。
(2)请在划线处填入正确的代码。
优化集训11 循环结构的程序实现
1.C 解析 首先,需要注意range(1,10,3)参数的边界。由于循环变量i的取值小于10,所以变量i取值为1、4、7,语句x+=i功能是累加变量i,所以循环体的功能是x=1+4+7,结果是12,答案选C。
2.B 解析 本题考核的是while循环语句的理解,重点观察循环体及循环条件,观察循环变量n的取值情况,当输入n的值是4时,n:4、3、2,此时n>1循环条件成立。当n的值为1时结束循环。所以fac=1 4 3 2,fac最终值为24,答案选B。
3.D 解析 本题重点是理解循环区间边界以及步长step的变化,对步长step而言:
①step>0循环区间是[start,end),且start②step<0循环区间是[start,end),且start>end时执行循环体。
结合循环条件的理解,本题为10,1,-2或10,0,-2,答案选D。
4.A 解析 break属于循环控制语句,break直接跳出整个循环,continue则仅仅跳过本次循环。break语句将直接从循环体中跳出,另外break语句也常用于for循环。
本题中当循环变量i值等于5时条件成立,直接结束整个循环语句。而循环变量i值为1~4时,执行语句list1.append(i),因此答案选A。
5.A 解析 本题考查随机数及算法的综合应用能力。随机数n的值域为[50,101],外循环遍历了n所有可能的因子,当找到n的因子,将因子连接到列表a中,同时分解n,不断分解直至不能整除,则进入大循环取下一个因子。因此本题在对随机数n进行质因分解,A选项3 3 3 3=81,数据在[50,101]范围内,有可能;B选项的9可以被分解为3 3,且2 2 9=36,数据不在[50,101]范围内,B错误,同理C,D都未完全分解,错误。
6.A
7.B 解析 本题考查程序的阅读理解能力。变量c,记录的是列表a从下标2开始,满足每个数等于前两数之和的个数。观察列表a现有元素,c=3。
8.C 解析 本题求最长连续升序子序列的长度。其中变量c用于统计连续非降序子序列的长度,变量m用于记录最大连续非降序子序列长度。其中条件a[i]>=a[i-1]成立,说明是非降序子序列,计数变量c执行加1操作,最大值标记变量m通过取原m与c的最大值进行更新;若条件不成立,计数变量c重置为1。在列表a中,非降序子序列分别为[3,4][2,5,6,7,7][1,2],所以m的最大值为5,在程序执行完毕,变量c为最后一个非降序子序列的长度,所以c的值2。
9.D 解析 根据题目要求,批改的结果答对为“True”,答错为“False”,而D选项对tmp的赋值为答错为“True”,答对为“False”,因此算法设计错误。
10.C 解析 continue属于循环控制语句,continue语句跳出本次循环,而break跳出整个循环。continue语句将跳过当前循环(continue语句后面剩余语句不执行),而是继续进行下一轮循环。另外continue语句也常用于for循环。本题中当循环变量i是5的整数倍时,才会执行语句list1.append(i),其余情况均执行continue语句。因此答案选C。
11.B 解析 本题考查循环语句及数组的应用。本题可使用列表法,记录变量的值(表略),故选B。
12.D 解析 本题考查算法的表式方法、算法的程序实现。流程图中,i的初值为1,s的初值为0,A,C选项中均没有给变量i赋初值,故错误;while循环中,条件判断语句“i%5==0 ”为True时,执行“s=s+i”语句,为False时,不处理,故B选项错误,D选项正确。
13.C 解析 本题考查for循环语句的嵌套及综合分析能力。外循环i控制行数,共5行;内循环st存储' '的个数,每次输出之后不清空,因此下次循环加上次的' '的个数,故第一行1个' ',第二行2个' ',第三行4个' ',依次类推……所以本题选C。
14.C 解析 本题考查Python循环相关知识。列出表格如下:
循环次数 0 1 2 3 4 5
a 22 6 6 6 2 2
b 16 16 8 4 4 2
综上所述,b=2。
15.(1)c (2)①sum=0 ②thief!=″d″ ③sum==3
解析 本题考查字符串知识和枚举算法。(1)根据逻辑推理可知c是小偷。(2)①变量sum初始化;②此处利用枚举法依次将小偷分别假设为四人,将d的话转换为相应的代码,即thief!=″d″。③sum代表说真话的数量,此处有三人说真话,故sum==3。
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)