内容正文:
第2章 算法与程序实现
一、选择题
1.某算法部分流程图如图所示。执行这部分流程,程序可读取的输入数据依次为1,2,4,6,8,则程序结束时,输出值是( )
A.30 B.22 C.16 D.12
2.在Python中,若把多个语句写在同一行,则语句之间使用的分隔符是( )
A.: B., C.& D.;
3.列表1st包含10个元素,有如下Python程序段:
from random import randint
lst=[9,11,3,18,6,30,20,9,1,2]
n=len(Ist)
t=randint(3,6)
for i in range(1,t):
k=n-i
for j in range(n-i-1,-1,-1):
if lst[j]>lst[k]:
k=j
if k!=n-i:
lst[k],lst[n-i]=lst[n-i],lst[k]
print(t,lst)
结果不可能是( )
A.3 [9,11,3,18,6,2,1,9,20,30] B.4 [9,11,3,9,6,2,1,18,20,30] C.5 [9,1,3,9,6,2,11,18,20,30] D.6 [9,1,3,2,9,6,11,18,20,30]
4.下列哪个Python代码片段正确实现了一个无限循环( )
A.while True: pass B.for x in range(10): pass
C.for x in [1, 2, 3]: pass D.while False: pass
5.在Python中,函数len([1,2,5])的返回值是( )
A.5 B.1 C.8 D.3
6.有如下Python程序段:
s=input()
occ=""
n=len(s)
rk=ans=0
for i in range(n):
while rk < n and s[rk] not in occ:
occ+=s[rk]
rk+=1
ans=max(ans,rk-i)
occ=occ[1:]
print(ans)
执行该程序段后,若输入字符串s的值为“ilovexuejun”,则输出ans的值为( )
A.6 B.7 C.8 D.9
7.以下Python表达式的值最大的是( )
A.len("a s h") B.int("123456789"[6:7]) C.13 // 2 % 10 D.abs(ord('A') - ord('G'))
8.某算法的部分流程图如图所示。执行这部分流程,若依次输入的数据为3、-4、5、-2、2、3、0,则输出m的值为( )
A.5 B.7 C.8 D.10
9.某算法的部分流程图如图所示,执行这部分流程,若输入m的值为20,n的值为3,则输出c的值是( )
A.18 B.28 C.29 D.47
10.某Python程序如下:
p=")!@#$%^&*("
c="cra2edu"
t=""
for i in range(len(c)//2+1):
if i%2==0:
t+=c[len(c)-i-1]
elif c[i]>="0" and c[i]<="9":
t+=p[int(c[i])]
else:
t+=c[i]
print(t)
程序运行后,输出的结果是( )
A.ude@ B.cda# C.ure@ D.arc#
11.下图所示的流程图用于计算圆的周长,流程图中①处的内容是( )
A.C=3.14*r*r B.C=2x3.14xr C.C=2*3.14*r D.输出r
12.下列 VB 表达式的值等于 2016 的是( )
A.Mid("20161111",1,4) B.Len("2015")+1
C.Str(2008)+ "8" D.2016 Mod 2^20\10
13.下列关于算法描述方式的叙述正确的选项是( )
①自然语言; ②流程图; ③伪代码; ④汇编语言
A.①②③ B.①②④ C.①③④ D.②③④
14.某算法的部分流程图如图所示。若输入 n 为 100,执行这部分流程图后,输出s的值为( )
A.-50 B.50
C.100 D.-5050
15.下列Python表达式的值为False的是( )
A.258//10%10==5 B."7" in["3","7","m"]
C."student"[2:5]=="ude" D.1en("python")==max([2,6,1,4,7])
16.已知链表a中的每个节点包含数据区域和指针区域两部分,下列Python 程序段的功能是在链表a中删除数据值为key的所有节点
key=int(input("输入要删除的数据:"))
head=0
while a[head][ 0]==key and head!=-1:
head=a[head][1]
p=q=head
if head!=- 1:
q=a[q][1]
while ① :
if a[q][0]==key:
②
else:
p=a[p][1]
q=a[q][1]
则划线①②处的代码分别为( )
A.①a[q][1]!=-1 ②a[p][1]=a[q][1] B.①a[q][1]!=-1 ②a[q][1]=a[p][1]
C.①q!=-1 ②a[q][1]=a[p][1] D.①q!=-1 ②a[p][1]=a[q][1]
二、填空题
17.以下流程图中ⅹ为整型变量
输入9,算法执行结果是 。
18.为监控车辆是否超过规定的最高车速,交通部常用测速仪来检测。测速仪前后两次发出并接收超声波信号,再根据两次信号差,测出被测车辆的速度。如果测得车辆超速就进行违章记录,否则不进行处理。以上算法描述采用的是 语言,这个问题应该使用 结构来设计算法比较合适,如果用流程图来描述该部分算法,在对应该填入的内容是 , 。
19.以下流程图运行结束后y的值是 。
20.阅读下列Python程序,写出运行结果
a=[5,2,8,7,3] #创建列表,各元素用逗号隔开,放在方括号内
a[0]=8 #修改列表第一个元素的值为8,注意列表的索引号
del a[1] #删除列表第二个元素
a.append(9) #在列表尾部添加一个数据元素9
print(a) #打印列表
运行结果: 。
21.流程图描述的算法执行结果是 。
22.李华同学和业主委员会成员一起参与了小区智能停车场的改造,希望实现的功能主要包括车牌自动识别、车辆身份判断、出入控制、停车时间计算、费用收取及核查、语音对讲等。
管理策略:1.对于本小区业主固定车辆实施年费制,只要在缴费有限期内,则可自由通行。2.缴费期满则在车辆通过时自动提醒业主续费。3.为避免场地资源浪费,停车场允许外来车辆进入,按停车时长进行收费。
计费规则:时长不超过3小时(含3小时)的收费5元;时长超过3小时且不超过8小时(含8小时)的在5元的基础上每超过1小时增收2元;时长超过8小时且不超过12小时(含12小时)的收费30元。
李华根据计费规则设计了外来车辆进入停车场的计费流程图,时长用“T”表示,收费金额用“M”表示,请帮忙完善流程图,①②③④⑤⑥处应填的内容分别是( )、( )、( )、( )、( )、( )
(填字母:A、M=30 B、3<T≤8 C、M=5 D、M=5+(T-3)*2 E、8<T≤12 F、T≤3)
三、操作题
23.根据输入的18位身份证,输出身份证中包含的出生日期信息。
sfz = input("请输入您的身份证号码(18位):")
if _____①_______:
print("您的身份证号码长度不对!")
else:
year = int(sfz[6:10])
_______②__________
day = int(sfz[12:14])
print("你的出生于",year,"年",month,"月",day,"日。")
请完善程序代码(1) (2)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查程序分析。
分析程序可知,当输入的a值和k值相等时,累加循环变量i到b,输出b。a的值为1、2、4、8时,与k的值相等,累加i值。对应的i值为2、4、6、10。故b=2+4+6+10=22,故正确答案为:选项B。
2.D
【详解】本题主要考查Python基础知识。在Python中,若把多个语句写在同一行,则语句之间使用的分隔符是分号(;),故本题选D选项。
3.D
【详解】本题考查Python基础。
t是随机产生的,整段代码完成了t-1次选择,程序运行后,输出的1st后t-1个元素是有序的,并且都比前面的元素大。故正确答案为:选项D
4.A
【详解】本题考查Python循环语句。选项A是一个典型的无限循环,因为条件True永远为真,循环将一直执行。选项B和C中的for循环都有明确的结束条件,循环会在遍历完指定范围或列表后结束。选项D不会执行,因为条件False永远为假,循环体不会被执行。故选A。
5.D
【详解】本题考查Python函数。函数len()用于返回一个序列(如列表、元组、字符串等)的长度或元素个数。给定列表[1,2,5],使用len()函数计算其元素个数,即列表的长度。因此,函数len([1,2,5])的返回值是列表[1,2,5]中的元素个数,即3。故答案为:D。
6.B
【详解】本题考查Python程序。给定字符串“ilovexuejun”,我们需要找出不包含重复字符的最长子串,并输出其长度。程序使用了滑动窗口的方法,通过两个指针(i和rk)和一个临时字符串(occ)来实现。具体步骤如下:初始化:输入字符串s为“ilovexuejun”,occ为空字符串,n为字符串长度11,rk和ans都初始化为0。遍历字符串:对于每一个起始位置i,通过内循环移动rk指针找到最长的无重复字符子串,并更新occ和ans。内循环条件是rk未到达字符串末尾且字符s[rk]未出现在occ中。每次rk移动时,将当前字符s[rk]加入occ,并更新rk。内循环结束后,更新ans为当前最长无重复子串的长度rk-i。更新occ为去掉第一个字符的子串,为下一次迭代做准备。最后打印ans。根据以上过程,可知输出ans的值为:7。故答案为:B。
7.B
【详解】本题主要考查Python表达式的运算。len("a s h")=3,int("123456789"[6:7])=7,13 // 2 % 10=6%10=6,abs(ord('A') - ord('G'))=6,故本题选B选项。
8.C
【详解】本题考查流程图。程序运行过程如下所示,由此可知最终输出的m的值为8。故答案为:C。
s
m
a
0
0
3
3
3
-4
0
3
5
5
5
-2
3
5
2
5
5
3
8
8
0
9.C
【详解】本题考查的是流程图识读。根据流程图可知只要a,b任意一个变量的值大于等于m循环就结束,关键就看哪一个变量优先大于m,则c的值就等于那个。a=3,b=4,m=20进行累加的时候先执行a=a+b再执行b=a+b,具体累加情况如下,得c=29。
m
n
a<m
b<m
c
20
3
3
4
7
11
18
29
29
故选:C。
10.C
【详解】本题主要考查Python程序的执行。程序段实现了对字符串的处理。由“range(len(c)//2+1)”生成的序列为[0,1,2,3],循环执行4次。索引i为偶数时,在字符串c中取与c[i]对称的字符,因此i=0时,将字符“c”对称的字符“u”取出并拼接在字符串t中;索引i为奇数时,取出字符“r”并拼接在字符串t中;i=2时,将字符“a”对称的字符“e”取出并拼接在字符串t中;当c[i]为数字时,则在字符串p中以c[i]为索引取出字符“@”。故本题选C选项。
11.C
【详解】本题考查的是流程图识读。阅读流程图,可知这是求圆的周长C,故流程图中①处的内容是C=2*3.14*r(*表示乘)。故选C。
12.D
【详解】本题主要考查VB表达式。Mid()是截取字符串函数,Mid("20161111",1,4)=“2016”;Len()是求字符串长度函数,Len("2015")+1=5;Str(2008)+ "8"=“20088”(字符串拼接);2016 Mod 2^20\10=2016,(Mod是取余运算符,优先级"^">"\">"Mod"),故本题选D选项。
13.A
【详解】本题考查的是算法相关知识。算法描述有:自然语言、流程图、伪代码。故本题应选A。
14.A
【详解】本题考查的是流程图识读。阅读流程图可知,其功能是计算:s=1-2+3-4+……的功能。故若输入 n 为 100,则s=1-2+3-……-100=-50,选项A正确。
15.D
【详解】本题考查的是Python表达式。258//10%10==5值为True,"7" in["3","7","m"]值为True,"student"[2:5]=="ude"值为True,1en("python")==max([2,6,1,4,7])值为False。故本题应选D。
16.D
【详解】本题主要考查数据结构及Python程序实现。在链表中删除值为 key 的节点,除了找到当前节点 q ( a [ q ][0]== key )外,重要的是要跟踪到 q 的前趋节点。从代码中可以看出,q 的前趋节点为 p 。当找到节点 q 时,要删除 q 节点,只需要修改 p 的指针为 q 的后继。①空循环条件遍历链表 a , q 为当前元素指针,要将所有数据都找完,循环条件应为 q !=-1,若条件为 a [q][1]!=-1,则会漏判最后一个数,②空填写为 a [ p ][1]= a [ q ][1],以实现删除q节点,故本题选D选项。
17.AM
【详解】本题考查算法。
当x=9时,x<0 or x>23判断返回逻辑假,则执行下一个判断,x<12返回逻辑真,则输出AM。
18. 自然语言 条件分支 车辆超速? 进行违章记录
【详解】本题主要考查算法的描述。以上算法描述采用的是自然语言,这个问题应该使用条件分支结构来设计算法比较合适,如果用流程图来描述该部分算法,在菱形框填入判断条件即车辆超速?,若是则进行违章记录,否则不进行处理。
19.3
【详解】本题考查算法流程图的识读。y=1
第一次循环,y=y+1=2,满足y<3
第二次循环,y=y+1=3,不满足y<3,输出y的值是3。
20.[8,8,7,3,9]
【详解】本题考查的是Python列表。初始列表a=[5,2,8,7,3],依据程序后的注释,可知运行结果:[8,8,7,3,9]。
21.16
【详解】本题考查的是流程图的识读。阅读流程图可知,计算的是1+3+5+7的值,故填16。
22. F B E C D A
【详解】本题考查的是流程图识读。按照计费规则,首先判断时长是否不超过3小时(含3小时)即T<=3,是则收费5元M=5;否则判断时长是否超过3小时且不超过8小时(含8小时)即 3<T≤8;否则判断时长是否超过8小时且不超过12小时(含12小时)即 8<T≤12,满足②则执行M=5+(T-3)*2,满足③则执行M=30。
23. len(sfz)!=18 month=int(sfz[10:12])
【详解】本题考查的是python选择语句。len( )是获取字符串长度,由print("您的身份证号码长度不对!")语句可知第一空应为:len(sfz)!=18;月份在身份证的第11、12位,python中字符串的下标是从0开始,故第二空应为:month=int(sfz[10:12])。
【点睛】
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$