内容正文:
第2章 算法与程序实现
一、选择题
1.如下图所示,是求平均值的算法,其描述方法是( )
①输入a、b、c的值
②计算y=(a+b+c)/3
③输出y的值
A.流程图 B.伪代码 C.自然语言 D.高级语言
2.以下程序段定义的函数btoh接受一个4位二进制数的字符串,函数返回该二进制数对应的十六进制数:
def btoh(b):
hs="0123456789ABCDEF"
s=0
for c in b:
s=s*2+int(c)
return
该程序段画线处应填入的代码为( )
A.btoh B.btoh[s] C.hs[s] D.hs
3.有部分流程图结构如右图所示,其算法结构属于( )
A.顺序结构 B.重复结构 C.分支结构 D.循环结构
4.有下面一段程序,运行该程序后s的值为( )
A.3 B.5 C.8 D.10
5.有如下Python程序段:
s = [3,5,2,7,4]
m1 = m2 = s[0]
i=1
while i<len(s):
if s[i] >= m1:
m2 = m1
m1 = s[i]
elif s[i] >= m2:
m2 = s[i]
i=i+1
print(m2)
执行上述程序后,输出的结果是( )
A.7 B.5 C.4 D.3
6.在Python中,能正确表示条件“x小于-5或大于等于3”的表达式是( )
A.x>-5 or x<=3 B.x>-5 and x<=3 C.x<-5 or x>=3 D.x<-5 and x>=3
7.“回文串”是一个正读和反读都一样的字符串。下列Python段的功能是:输入一个字符串,判断该字符串是否为回文串,若是则输出“Yes”,否则输出“No”。
s=input("请输入字符串:")
i=0
j=len(s)-1
flag=True
while (1) and flag:
if s[i]==s[j]:
i+=1
(2) else:
flag=False
if (3) :
print("Yes")
else:
print("No")
则程序划线处应填人的语句为( )
A.①i<len(s)//2 ②j+=1 ③flag B.①i<len(s)//2 ②j+=1 ③not flag
C.①i<=len(s)//2 ②j-=1 ③flag D.①i<=len(s)//2 ②j-=1 ③not flag
8.某算法的流程图如图所示,关于该算法下列说法正确的是( )
A.执行这部分流程后,变量 i 的值为 7 B.k 的值为 1×2×3×4×5×6×7 的结果
C.该流程图是双重循环结构 D.将条件“i≤x/2”改成“i<x”,k 的值不会发生变化
9.在编程过程中,根据问题描述,给出解决问题的详细过程和方法,这一步骤属于( )
A.分析问题 B.调试运行 C.设计算法 D.编写程序
10.数组y中存放了n个数据,将所有偶位数据向前移动,奇位数据不变。如数组[1,4,7,9,16,25],处理后得到结果[7,4,16,9,1,25]。实现该功能的Python程序段如下,划线处应填入的正确代码组合为( )
tmp=y[0]
for i in range(① ):
②
y[n-2]=tmp
A.① n-2,0,-2 ② y[i-2]=y[i] B.① 2,n,2 ② y[i-2]=y[i] C.① 0,n-1,2 ② y[i] =y[i+2] D.① n-4,-1,-2 ② y[i] =y[i+2]
11.有如下Python程序段:
from random import randint
s, i, ans=1,0,0
k= randint (10,24) # randint(10,24)随机生成10到24(含10和24)之间的整数
for j in range (len (nums)):
s=s * nums [j]
while s >= k:
s=s / nums [i]
i+=1
ans +=j -i+1
若nums的值为[2,3,4,5],执行如下程序段后,变量ans的值不可能是( )
A.4 B.5 C.6 D.7
12.有如下Python程序段:
x,y,z=5,3,4
s=0
if x>y:
s=x
elif y>z:
s+=z
s-=5
print(s)
上述程序段运行之后s的值是( )
A.0 B.-5 C.-1 D.5
13.有如下Python程序段:
s = input(); t = 0; mw = ""
for i in range (len(s)):
ch= s[i]
if "0" <= ch <= "9"
t = t * 10 + int(ch)
elif ch == "-":
mw += chr(t % 26 + 65)
elif "A" <= ch <= "Z"
t = 0
else:
mw += ch
print (mw)
执行该程序段输入27a-J2024Y-08!,则输出的结果是( )
A.aBA! B.aA! C.aBW! D.aBAI!
14.若要输出 100以内所有能被7整除的正整数,则判断条件应填写( )
A.i//7==0 B.i%7==0 C.i//7!=0 D.i%7! =0
15.《孙子算经》中,有这样一道算术题: “今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数。这样的问题,也有人称为“韩信点兵”。 现假设所求数为m, 以Python 编程,下列表达式中判断条件符合要求的是( )
A.m/3==2 and m/5==3 and m/7==2 B.m/3==2 or m/5== 3 or m/7==2
C.m%3==2 and m%5==3 and m%7==2 D.m%3==2 or m%5==3 or m%7==2
16.某快递公司规定:快件不超过1公斤的,快递费10元,超过1公斤的部分,按每公斤5元计费。编写快递费计算程序流程图如下图所示(运费为S.质量为P),图中①和②处的内容应是( )
A.①10②10+5* P B.①10②10+5* (P-1) C.①10②10+5* P D.①10* P②5*(P-1)
二、填空题
17.运行下面Python代码,
a=23
b=int(a/10)
a=a-b*10
print(a,b)
运行后,a的值为 ,b的值为 。
18.若三条线段的长度分别为a、b、c,判断它们是否能构成三角形(任意两边之和大于第三边)的程序段如下,请把下列语句补充完整。
a,b,c=3,4,5
if :
pass #计算面积等其他操作
else:
print("不能构成三角形")
需补充的语句为: 。
19.在计算机编程中,变量的作用是 。
20.阅读下列程序,写出运行结果。
21.为了更好地了解某地的水质情况,科研人员采集了该地各监测点当天的水质数据。数据中包含了各监测点的水质类别、水温(℃)、pH、溶解氧(mg/L)、高锰酸盐指数(mg/L)。通过数字化学习,小申了解到水质类别从高到低分为1-5类,级别最高(质量最好)为1,级别最低(质量最差)为5。小申采集了某监测点的水质数据,部分数据如表所示。小申设计了一个算法,统计水质类别为1的天数。请选择合适的框图,将其拖至右侧流程图的虚线框内,将算法设计完整。
日期
水质类别
pH
溶解氧
高锰酸盐指数
2021/1/1
3
7.54
5.39
4.5
2021/1/2
3
7.47
6.42
4.85
2021/1/3
2
7.8
6.52
1.52
2021/1/4
1
6.5
8.24
1.36
2021/1/5
3
7.56
5.21
4.74
2021/1/6
2
7.27
7.08
1.03
2021/1/7
2
6.87
6.87
1.03
2021/1/8
2
6.59
6.59
1.94
2021/1/9
1
7.76
7.76
3.36
① ②
三、判断题
22.创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,)。( )
23.在Python语言中,列表中的所有元素必须为相同数据类型的数据。( )
24.在Python语言中,range(4,9)中元素的个数是4个。( )
25.2021年7月19日-20日,河南郑州经历了百年罕见的特大暴雨,城市受灾严重,一段众人合力破窗救出一位外婆和外孙、外孙女的视频惊心动魄。
原来60多岁外婆开车接外补和外孙女放学途中,遭遇车辆被大水围困。外婆立即给较远位置的女儿打电话求助,报出她附近店铺名字:一家便利店:一家酒店和一家面馆。女儿第一反应是报警,但当时所有报警电话都占线:于是女儿通过外卖平台和点评软件搜索便利店、面馆、酒店的名字:确定外婆的位置,并查询到这些店铺的联系电话,三家店铺均打通电话,但便利店老板在较远位置救援,店内无人;面馆只有一人,立刻赶去现场;酒店有数人也赶去救援。于此同时,无法赶赴现场的女儿在安全知识平台查询呛水、溺水抢救措施,以备急用。
大家想尽办法,利用有限的工具,最终在大水即将漫过车顶时救出被困三人至安全处。众人喜极而泣,对女儿冷静、睿智地正确“远程求救”纷纷表示赞赏。
请阅读以上材料,分析女儿危急关头处理事件的方法与流程,完成下列各题。
整个救援过程是通过B方向实施的,其中只用到了分支结构。
四、操作题
26.为了凸显图像的轮廓与特征,可以对图像进行二值化处理。图像二值化是将图像上的像素的灰度值设置为0或1(0表示黑色,1表示白色)。小明设计图像二值化算法如下:
输入数据:将原图转换为灰度图,将每个像素的灰度值存入二维数组img中;
处理数据:如果一个像素的灰度值大于或等于阈值,则将该像素灰度值设置为1,否则设置为0;
输出数据:将处理后的数据以图像的形式呈现。
例如:部分图像二值化过程如图1所示。
图1
回答下列问题:
(1)根据题意,若阈值为100,则图1中第一行(虚线框处),二值化处理后的编码是
(2)实现图像二值化的Python程序段如下,请在划线处填入合适的代码。
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('① ').convert('L'))
key=int(input('请输入设定阈值:'))
rows,cols=img.shape
for i in range(rows):
for j in range(cols):
if ② : #每个像素灰度值与阈值进行比较
img[i,j]=1
else:
img[i,j]=0
#图像输出程序略
(3)阈值为100的运行结果如图2所示,若输入阈值为50,运行程序后输出的图像有可能是▲ (单选,填字母)。
图2 A. B. C.
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查算法描述相关内容。算法的描述方法有:流程图、N-S图、自然语言、伪代码等。如图所示,采用的描述方法是自然语言。故本题答案是C选项。
2.C
【详解】本题考查Python函数。在函数btoh中,通过遍历二进制字符串b,将其转换为对应的十进制数s。而hs字符串中存储了十六进制的字符表示。所以要得到二进制对应的十六进制字符,应该使用hs[s],即从hs字符串中取出索引为s的字符。故答案为:C。
3.D
【详解】本题考查算法流程图相关内容。算法有顺序、选择(分支)、循环三大基本结构。由图可知,当i小于等于4成立时,重复执行相应操作,属于循环结构。故本题答案是D选项。
4.B
【详解】本题主要考查Python程序的执行。当list[i]>0且i<=n时,s递增,i递增,否则退出循环。当list[5]=-9<0,退出循环。故s=0+1+1+1+1+1=5,故运行程序后s的值为5,故本题选B选项。
5.B
【详解】本题考查Python程序。s=[3,5,2,7,4],m1=m2=3,i=1进入while循环:i=1,s[i]=5,5>=3,所以m2=3,m1=5;i=2,s[i]=2,2<5,且2<3,不更新m1和m2;i=3,s[i]=7,7>=5,所以m2=5,m1=7;i=4,s[i]=4,4<7,且4<5,不更新m1和m2循环结束后,m2的值是5。故答案为:B。
6.C
【详解】本题主要考查Python表达式的运算。and是“且”关系,or是“或”关系,故能正确表示条件“x小于-5或大于等于3”的表达式是x<-5 or x>=3,故本题选C选项。
7.C
【详解】本题考查Python程序。本题采用双指针的方法来判断头尾一对字符,首先判断i是否小于等于字符串长度的一半,这样在字符串长度为奇数时可以正好判断到中间位置的字符,因此①处代码为i<=len(s)//2。变量i指向字符串的头部,j指向字符串的尾部,因此②处代码为j-=1或j=j-1。最后根据逻辑变量flag的值来判断是否为回文串,当s[i]!=s[j]时,flag为False,因此③处代码为flag或flag==True。故选C。
8.D
【详解】本题考查流程图。结合模拟表可知,i 值为 8,A选项错误;k 值为 14,B选项错误;该流程图是单循环结构,x%i==0 是分支结构,C选项错误;修改条件后循环继续下去,x%i==0 条件均不成立,所以 k 值不变,D选项正确。故答案为:D。
k
i
i≤x/2?
x%i==0?
1
1
是
是
1
2
是
是
2
3
是
否
2
4
是
否
2
5
是
否
2
6
是
否
2
7
是
是
14
8
否(结束)
—
9.C
【详解】本题考查计算机解决问题的方法。设计算法,指的是根据问题描述,给出解决问题的详细过程和方法,这一步骤是解决问题的核心步骤之一。故答案为:C。
10.B
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,以数组[1,4,7,9,16,25]为例:A选项,将代码带入程序段,分析其运行,可得结果为:[16, 4, 16, 9, 1, 25],不符合题意。B选项,将代码带入程序段,分析其运行,可得结果为:[7,4,16,9,1,25],符合题意。C选项,若i=n-2,y[i+2]=y[n],索引越界溢出,语法错误。D选项,将代码带入程序段,分析其运行,可得结果为:[16, 4, 16, 9, 1, 25],不符合题意。故本题答案是B选项。
11.A
【详解】本题考查Python程序。初始化变量s=1,i=0,ans=0。生成随机数k,范围在10到24之间。遍历nums列表,对于每一个元素执行以下操作:更新s的值为s*nums[j]。通过while循环,如果s>=k,则将s除以nums[i]并增加i的值。计算ans的值为ans+(j-i+1)。具体步骤:j=0,ans+=0-0+1=1;j=1,ans+=1-0+1=2;j=2,如果k=10,那么s>=10,s=24/2=12,i=1;s=12/3=4,i=2,跳出循环;如果k=24,那么s=24,s>=24,s=24/2=12,i=1,跳出循环;ans+=2-i+1,根据不同的k值,i的值不同,如果k=10,那么i=2,ans+=2-2+1=1;如果k=24,那么i=1,ans+=2-1+1=2;此时ans的值最少增加1。j=3,如果k=10,s=4*5=20,s>=10,s=20/4=5,i=3,跳出循环;如果k=24,s=12*5=60,s>=24,s=60/3=20,i=2,跳出循环;ans+=3-i+1,根据不同的k值,i的值不同,如果k=10,那么i=3,ans+=3-3+1=1;如果k=24,那么i=2,ans+=3-2+1=2;此时ans的值最少增加1。从上面的分析可以看出:当j=0和j=1时,ans的值已经为3。当j=2和j=3时,ans至少增加1。所以,ans的值最小是5(3+1+1),即不可能是4。
12.A
【详解】本题考查Python程序。x>y成立,故s的值是5,条件语句结束后,s=s-5,因此s=0。故答案为:A。
13.A
【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程如图所示:。故本题答案是A选项。
14.B
【详解】本题考查Python。100以内所有能被7整除的正整数的判断条件是i%7==0(一个数除以7的余数为0)。故选B。
15.C
【详解】本题考查的是Python表达式。求余数用%,判断相等用==。个数除以3余2,除以5余3,除以7余2,要同时满足,故判断条件为:m%3==2 and m%5==3 and m%7==2。选项C正确。
16.B
【详解】本题考查算法描述相关内容。结合题目内容,分析流程图,若快件质量小于等于1成立,执行①处,否则执行②,快件质量小于等于1时,快递费10元,即S=1,超过1公斤的部分,按每公斤5元计费,即S=10+5*(P-1)。故本题答案是B选项。
17. 3 2
【详解】本题考查Python基础。b=int(a/10)=int(23/10)=int(2.3)=2;a=a-b*10=23-20=3。故正确答案为:①3;②2。
18.(a+b)>c and(b+c)>a and(a+c)>b
【详解】本题考查Python基础。
三条线段的长度分别为a、b、c,判断它们是否能构成三角形(任意两边之和大于第三边)。故三种边的长度约束需同时满足,故为逻辑与关系。故正确答案为:(a+b)>c and (b+c)>a and (a+c)>b。
19.存储数据值
【详解】本题考查程序设计相关内容。在编程语言中,变量充当了将数据存储在计算机内存中的容器的角色。每个变量都有一个名称和一个对应的值,程序可以通过使用变量名称来引用和操作这些值。故本题答案是:存储数据值。
20.90
【详解】本题考查程序分析。
第一步,根据确定层次关系
运行顺序:
先运行第1行,跳过红框自定义函数到第7行,然后执行绿框代码。当运行到绿框内is_prime(x)时,调用红框自定义函数。
第一步,自定义函数的意义
红框内为自定义函数,遍历“2”-“n-1”所有数字,如果n能被其中任何一个数整除,就返回False,否则就返回True,所以红框是在判断n是否是质数,如果该数是质数,则返回True,否则返回False。(质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数)。
第二步模拟运行
①初始值:1s=[23,45,67,87],sum=0
②进入绿框,x遍历列表ls
x=23时,是质数,执行第10行,sum=sum+x=0+23=23
x=45时,不是质数,可以被3整除,不执行第10行
x=67时,是质数,执行第10行,sum=23+67=90
x=87时,不是质数,可以被3整除,不执行第10行
③绿框循环完毕,执行第11行,输出sum,故运行结果为90
21.
【详解】本题考查的是流程图识读。依次读取水质类别数据,如果还有未读取的数据,则继续读取下一个数据,对读取的数据进行判断,如果水质类别为1,则计数cnt加1。故①为: ②为:
22.正确
【详解】本题考查Python基础。
在Python中,要创建一个只包含一个元素的元组,确实需要在该元素后面加上一个逗号。这是因为在Python中,圆括号()通常用于定义元组(tuple)或者作为函数调用的一部分,但如果没有逗号来明确指示这是一个元组,Python解释器可能会将圆括号内的内容解释为表达式或仅仅是一个普通的值,而不是元组。故正确。
23.错误
【详解】本题主要考查Python列表的描述。Python中的列表,数据项不需要具有相同的类型,表述错误。
24.错误
【详解】本题考查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)。故使用函数range(4,9)返回的整数序列是4,5,6,7,8。题干说法错误。
25.错误
【详解】本题考查的是程序结构。B方向流程用到了分支结构和循环结构,故题干中说法错误。
26. 10011111 deer.jpg img[i,j]>=key B
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,推知:
(1)图1中第一行(虚线框处)8个数值中,只有第二、三个小于阈值100,其余均大于阈值,则二值化处理后的编码是:10011111,故本题答案是:10011111。
(2)②处,Python中的image.open函数是一个用于打开图像文件的函数。它可以打开多种格式的图像文件,包括JPEG、PNG、BMP等。此处需要调用open函数打开图片“deer.jpg”,故此处答案是:deer.jpg。③处,此处需要将每个像素灰度值与阈值进行比较,若大于等于阈值key,则编码img[i,j]为1,否则为0,故此处答案是:img[i,j]>=key。
(3)阈值是100时运行结果为图2,现在阈值是50,由于50小于100,图像将会有更多的部分为白色,选项中只有B图更白,故本题答案是:B。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$