内容正文:
第2单元 编程计算
一、选择题
1.下列关于计算机解决问题的说法正确的是( )
A.本质上是以“数学运算”的方式来实现的
B.需要将解决问题的方法细化为计算机能理解的各个步骤
C.必须用计算机语言来描述算法
D.直接将问题交给计算机来解决
2.运用计算机程序解决问题时,下列步骤合理的是( )
A.设计算法 分析问题 编写程序 调试程序
B.分析问题 设计算法 编写程序 调试程序
C.分析问题 编写程序 设计算法 调试程序
D.设计算法 编写程序 分析问题 调试程序
3.用Python算法控制结构描述“音量低于30分贝表示安静,30到50分贝表示交谈,高于50分贝表示吵闹”。设音量为t<单位为分贝),环境状态为s,下列程序段中不符合要求的是( )
A.
if t>50:
s="吵闹"
elif t>=30:
s="交谈"
else:
s="安静"
B.
if t>50:
s="吵闹"
elif t>=30:
s="交谈"
s="安静"
C.
if t>50:
s="吵闹"
else:
if t>=30:
s="交谈"
else:
s="安静"
D.
if t<30:
s="安静"
elif t<=50:
s="交谈"
else:
s="吵闹"
A.A B.B C.C D.D
4.在Python中,以下语句不合法的是( )
A.x=y=10 B.x=(y=10) C.x+=x+y D.x.y=y,x
5.有如下VB程序段:
Fori=1To1000
a=Int(Rnd*100+1)
b=Int(Rnd*100+1)
x=a+b
y=a-b
c=Sqr(x)
d=Sqr(y)
Nexti
调试时出现如图所示的错误提示,产生此错误的语句是( )
A.a=Int(Rnd*100+1) B.y=a–b C.c=Sqr(x) D.d=Sqr(y)
6.有如下Python程序段:
x="技术选考"
y=""
for i in range(len(x)):
y=x[i]+y
程序段执行后,变量y的值为( )
A.技术选考 B."技术选考" C."考选术技" D.考选术技
7.有如下程序段:
a=[2,1,3,4,5]
c=0
For i in range(2,len(a)):
if a[i-2]+a[i-1]==a[i]:
c=c+1
Print(c)
该程序段运行后,最后输出的内容是( )
A.1 B.2 C.3 D.4
8.运行以下Python程序段,输出结果是( )
A.2 B.3 C.4 D.9
9.某二分查找算法的Python程序段如下:
i,j = 0,len(d)-1
while i <= j:
m = (i+j)//2 # 语句①
if key == d[m]:
break
elif key < d[m]:
j = m-1
else:
i = m+1
当d为[6,12,15,18,22,25,28,35,46]时,运行该程序段查找key,语句①的执行次数小于等于2;若将d修改为[6,12,15,18,22,25,28,35,46,58],重新运行该程序段,查找同一key值,则语句①的执行次数不可能为( )
A.1 B.2 C.3 D.4
10.有如下 Python 程序段:
sum=0;sum1=0
for i in range(0, 100):
if i%3==0 and i%5!=0:
sum+=i
if i%3==0 and i%5==0:
sum1+=i
print(sum)
print(sum1)
执行改程序段,输出的 sum1 值是 ( )
A.315 B.1368 C.725 D.2318
11.有如下 Python 程序段:
c = "1/23//45///6"
t = ""
flag = True
s=0
for i in range(len(c)):
if c[i]=="/":
if flag:
s+=int(t)
t=""
flag = not flag
else:
t+=c[i]
执行上述程序段后, 变量 s 的值是( )
A.1 B.24 C.69 D.480
12.编写一个程序,实现“输入年份,判断是否为闰年”,最合适的程序结构是( )
A.选择结构 B.递归结构 C.顺序结构 D.循环结构
13.有如下 Python 程序段:
import random
n=random.randint(50,100)
a=[]
for i in range(2,n+1):
while(n % i == 0):
a.append(i)
n = n // i
print(a)
上述程序执行后,输出结果不可能的是( )
A.[2, 2, 2, 2, 3] B.[2, 2, 5, 5] C.[2, 5, 5] D.[53]
14.在Python中,运行下列程序,正确的结果是( )
s=0
for i in range(1,6,2):
s=s+i
print("i=",i,"s=",s)
A.i=5 s=15 B.i=5 s=9 C.i=7 s=9 D.i=6 s=21
15.有如下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
16.计算机编程解决问题的过程中,最核心的环节是( )
A.设计算法 B.分析问题 C.编写程序 D.调试运行
17.某 Python 程序如下:
def encode(msg,key) :
result=""
for i in range(0,len(msg)) :
c=msg[i]
if "a"<=c<="z":
result=chr((ord(c)+key-ord("a"))%26+ord("a"))+result
elif "0"<=c<="9" :
result=result+chr((ord(c)-key-ord("0"))%10+ord("0"))
return result
msg=input("请输入明文:")
key=int(input("请输入密钥:"))
re=encode(msg,key)
print(re)
程序运行后,输入 msg 的值为“1a2b3c” ,key=2,输出的结果是( )
A.edc901 B.edc345 C.9c0d1e D.3c4d5e
二、填空题
18.输入t的值4运行以下Python程序,结果是 。
d=[0,3,1,4,2]
t=int(input("请输入t的值:"))
if t>4:
print(d[d[t-1]])
else:
print(d[d[t]])
19.阅读下列程序,写出运行结果。
sum = 0
data = [34,5,9,41,78,2]
for i in data :
if i % 2 == 0:
sum = sum + iprint(sum)
运行结果是:
20.阅读下列程序,写出运行结果。
n = 36
s = 0
for i in range(2,n):
if n % i == 0:
s = s + 1print(s)
运行结果是
21.阅读以下程序,写出程序运行结果。
def jc(n):
s=1
for i in range(2,n+1):
s=s*i
return s
total=jc(4) #调用jc函数
print(total)
程序运行后,其输出结果为
22.已知a=2,b=1,以下Python程序段运行结束后,b的值是 。
三、判断题
23.在函数内部,既可以使用global关键字来声明使用外部全局变量,也可以使用global关键字直接定义全局变量。( )
24.网络爬虫是种程序或脚本,通过它可以将非结构化数据从网页中抽取出来,并以结构化的方式存储为本地数据文件。( )
25.在Python中,print("abc" * 3)的执行结果是"abcabcabc"。( )
26.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )
27.在Python3.x语言中,input()函数的返回值类型是字符串。( )
四、操作题
28.从字符串s中取任意个连续字符组成的序列称为该字符串的子串。例如:s=“abc”,“ab”、“a”都是字符串s的子串,而“ac”不是该字符串的子串。现输入由小写字母组成的字符串s,求s的子串中由相同字母组成的子串个数(相同子串只计一次)。例如 s=“abaaa”,其中子串“a”、“aa”、“aaa”、“b”都是由相同字母组成,个数为4。此算法解决问题的关键在于:计算每个字符的最大连续长度。
(1)若 s=“cccab”,则符合要求的子串个数为 。
(2)Python 程序如下,请完成划线处代码。
s=input()
ls=[0]*26
ls[ord(s[0])-97]=1
k=1
for i in range(1,len(s)):
if :
k+=1
else:
x=
if k>=ls[x]:
ls[x]=k
k=1
if k>=ls[ord(s[i])-97]:
ls[ord(s[i])-97]=k
ans=0
for i in ls:
print(ans)
29.某地居民生活用水实行阶梯式水价方案,阶梯式水价计量分为三级:第一级为每户每月20立方米及以下的用水量按2.75元/立方米计价;第二级为每户每月21至30立方米的用水量按3.65元/立方米计价;第三级为每户每月31立方米及以上的用水量按4.55元/立方米计价。根据用水量w(立方米)计算水价s(元)的Python程序如下:
w=float(input("请输入当月居民的用水量:"))
if w<=20:
s=2.75*w
elif ① :
s=2.75*20+(w-20)*3.65
else:
s=②
print("水价为:",s,"元。")
(1)若某户家庭当月的用水量为24立方米,则该家庭需要缴纳的水费为 元。
(2)请在划线处填入合适的代码。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查计算机解决问题相关内容。计算机问题求解是以计算机为工具利用计算思维解决实际问题的实践活动。计算思维是一种通过问题分解、抽象化、模式识别、算法设计和实现的思维方式,其核心是利用计算机等工具来处理和分析数据,帮助人们更好地理解和解决实际问题。计算机解决问题需要将解决问题的方法细化为计算机能理解的各个步骤:分析问题、设计算法、编写程序、调试运行和检测结果。计算机解决问题可以使用自然语言、伪代码、流程图、计算机语言来描述算法。计算机是在人们的具体指令之下解决实际问题的,计算机程序是一组操作指令或语句序列。ACD选项说法错误,B选项说法正确。故本题答案是B选项。
2.B
【详解】本题主要考查计算机程序解决问题。运用计算机程序解决问题的一般步骤是:分析问题、设计算法、编写程序、调试程序,故本题选B选项。
3.B
【详解】本题考查算法描述及Python选择程序设计相关内容。分析题意后观察4个选项,A、C、D都可以得出正确结论;B错误,无论音量是多少,结论都是“安静”。故选B。
4.B
【详解】本题考查Python语句。在Python中,赋值操作不能出现在表达式内部,不能将赋值语句作为另一个赋值语句的一部分,因此x=(y=10)语句不合法。故答案为:B。
5.D
【详解】本题考查VB相关知识。无效的过程调用或参数是指函数或者过程的参数有误,代码中涉及函数sqr和Int,a=Int(Rnd*100+1),b=Int(Rnd*100+1),这两条代码没有问题,y=a-b,会出现y<0,导致Sqr(y)参数有误,sqr为平方根函数,参数必须大于0,小于0则代码会出错。故产生错误语句是d=Sqr(y),本题选D。
6.C
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将字符串x中的字符,逆着保存到变量y中,x="技术选考",则程序段执行后,变量y的值为"考选术技",故本题选C选项。
7.B
【详解】本题主要考查Python程序的执行。分析程序可知,当a[i-2]+a[i-1]==a[i],即前2项的和等于第三项,则变量c递增1,a=[2,1,3,4,5],其中2+1=3,1+3=4,则c=2,故该程序段运行后,最后输出的内容是2,故本题选B选项。
8.D
【详解】本题主要考查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(0,5)等价于 range(0,5,1)。已知s=0,i的取值范围为1,3,5,所以s=1+3+5=9,故本题选D选项。
9.C
【详解】本题考查Python程序设计相关内容。本题涉及到二分查找算法相关操作。分析程序段,推知:
数组d为[6,12,15,18,22,25,28,35,46]时,i=0,j=8,m=4,执行程序段,查找过程用二叉树表示如下:
语句①的执行次数小于等于2,该次数与key值在二叉树中的深度值一致,因此查找的数key可能是:22(1次查找)、12(2次查找)和28(2次查找)。若将d修改为[6,12,15,18,22,25,28,35,46,58],此时,i=0,j=9,m=4,查找过程用二叉树表示如下:
第一次查找的仍然是22,若往左查找,第二次是12。但若第二次往右查找,则找到的是35,而不是原先的28,然后继续第三次查找,找到25,接着进行第四次查找,找到28,此时查找过程结束。所以查找同一key值,则语句①的执行次数不可能为3,故本题答案是C选项。
10.A
【详解】本题主要考查Python程序的执行。分析程序可知,sum1统计0~99中能同时被3和5整除的数进行求和,满足的数有015、30、45、60、75、90,因此sum1=0+15+30+45+60+75+90=315,故本题选A选项。
11.C
【详解】本题主要考查Python程序的执行。分析程序可知,变量c[i]依次取字符串c中的字符,若是数字,则执行else部分,即t+=c[i];若是其他字符,且flag为真,则执行s+=int(t)和t="",其次flag取反。因为最后一个数字6后无其他字符,不会再执行s+=int(t)。前面三组数字均能参与执行s+=int(t),故执行上述程序段后, 变量 s 的值是1+23+45=69,故本题选C选项。
12.A
【详解】本题考查的是程序结构。输入年份,判断是否为闰年,有两种情况:一种是闰年,一种是平年,故应使用选择结构。故选A。
13.A
【详解】本题主要考查Python程序执行与调试。分析程序可知,变量n随机生成[50,100]之间的整数,该程序通过嵌套循环求n的因子,将n的因子保存在列表a中,选项A中2*2*2*2*3=24,不在[50,100]范围内,故不可能,选A选项。
14.B
【详解】本题考查的是Python中for循环语句。range()函数是让Python从指定的起始值,并在到达所指的结束值后停止,不包含结束值。 range(1,6,2)生成的系列数是:1,3,5。故s=1+3+5=9,退出循环时i=5。选项B正确。
15.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。
16.A
【详解】本题考查的是计算机编程相关知识。计算机编程解决问题的过程中,最核心的环节是设计算法。故本题应选A。
17.A
【详解】本题考查的是Python循环语句及自定义函数。由if语句可知,如果是小写字母则后移key位,并放在字符串前端;由elif语句可知,如果是数字,则前移key位,并放在字符串的后端。程序运行后,输入 msg 的值为“1a2b3c” ,key=2;字母后移2位后edc,数字前移2位后901,组合后为:edc901。选项A正确。
18.1
【详解】本题考查Python程序设计相关内容。分析程序段,输入t的值为4,t>4不成立,执行else部分,输出d[d[t]],即d[2],故本题答案是:1。
19.114
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将列表data中的偶数进行求和,故sum=0+34+78+2=114,故运行结果是114。
20.7
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现统计能被36整除的数的个数(分别是2、3、4、6、9、12、18),用变量s统计,故s=7。
21.24
【详解】本题考查的是Python函数及循环语句。由s=s*i及 range(2,n+1)可知返回值是s=1*2*3*……n,total=jc(4)=1*2*3*4=24。
22.4
【详解】本题考查的是Python循环语句。初始a=2,b=1。
a>=b成立,第一次循环,执行b=a*b=2*1=2;
a>=b成立,第二次循环,执行b=a*b=2*2=4;
a>=b不成立,跳出循环,故b的值是4。
23.正确
【详解】本题考查Python基础。
global关键字的作用是告诉Python在函数内部使用全局变量而不是局部变量。如果在函数内部使用global关键字来声明变量,而在函数外部没有声明相同的变量,Python会创建一个新的全局变量。故正确。
24.正确
【详解】本题考查网络爬虫。网络爬虫就是一种能够按照一定的规则,自动地抓取万维网信息的程序或者脚本。它能够从网页中提取出所需的非结构化数据,并将其整理成结构化的形式,存储为本地的数据文件,以便后续的分析和处理。故说法正确。
25.正确
【详解】本题考查的是Python输出语句。*在字符串运算中表示重复。故print("abc" * 3)的执行结果是"abcabcabc"。题干说法正确。
26.正确
【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。
【点睛】
27.正确
【详解】本题考查Python函数。input()函数用于从标准输入读取一行,并将其作为字符串返回。无论用户输入什么内容,input()函数返回的值始终是字符串类型。故说法正确。
28. 5 s[i-1]==s[i] ord(s[i-1])-97 ans+=i
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,推知:
(1)若 s=“cccab”,则由相同字母组成的子串为:“c”、“cc”、“ccc”、“a”、“b”,共5个,故本题答案是:5。
(2)程序段实现题目要求。②处,k值为每个字符的最大连续长度,i取值范围是[1,len(s)-1],若s[i-1]==s[i]成立,表明该字符与前一字符相同,即该字符连续出现,k值应加1,故此处答案是:s[i-1]==s[i]。③处,若s[i-1]==s[i]不成立,表明出现新字符,则需要通过计算ord(s[i-1])-97确认其在ls中的位置,以便于下文更新该字符连续出现次数,故此处答案是:ord(s[i-1])-97。④处,ans统计由相同字母组成的子串个数,通过遍历ls,执行ans+=i,即可获得相同字母组成的子串个数,故此处答案是:ans+=i。
29. 69.6 w<=30 2.75*20+3.65*10+(w-30)*4.55或91.5+(w-30)*4.55
【详解】本题考查的是Python选择语句应用。
(1)若某户家庭当月的用水量为24立方米,依据阶梯式水价计量:第一级为每户每月20立方米及以下的用水量按2.75元/立方米计价;第二级为每户每月21至30立方米的用水量按3.65元/立方米计价,故该家庭需要缴纳的水费为:20*2.75+(24-20)*3.65=69.6元。
(2)①处,由s=2.75*20+(w-20)*3.65可知,此处是第二级计价,故此处应为:w<=30;②处,第三级为每户每月31立方米及以上的用水量按4.55元/立方米计价,故此处应为:2.75*20+3.65*10+(w-30)*4.55或91.5+(w-30)*4.55。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$