内容正文:
第二章 算法与程序实现
一、选择题
1.下列关于算法和算法描述,正确的是( )
A.用一种程序语言来实现某个具体问题的算法只可能有一种方式
B.可行性是指算法的每一个步骤理论上可行,并不要求实际操作可行
C.很多问题计算时无解,因此算法可以有 0 个或多个输出
D.算法中数据的存储包括原始数据、计算中间结果、最终结果
2.用Python算法控制结构描述“当BMI指数低于18.5时被定义为偏瘦,18.5-23.9为正常,高于23.9则为超重”,下列选项不正确的是( )
A.
if bmi<18.5:
print("偏瘦")
elif bmi<=23.9:
print("正常")
else:
print("超重")
B.
if bmi>23.9:
print("超重")
elif bmi>=18.5:
print("正常")
else:
print("偏瘦")
C.
if bmi>23.9:
print("超重")
if 18.5<= bmi<=23.9:
print("正常")
else:
print("偏瘦")
D.
if bmi>=18.5:
if bmi<=23.9:
print("正常")
else:
print("超重")
else:
print("偏瘦")
A.A B.B C.C D.D
3.在Python中,表示变量score不高于120的表达式是( )
A.score>=120 B.score<=120 C.score>=120 D.score<120
4.已知列表a中包含100个随机数(随机数的范围为0-9),现要输出每个数字在序列中的排名,数字越小,排名靠前(从1开始计数),且当数字大小相同时,排名相同,下一组数字的排名为当前数字排名加上当前数字的数量,如列表a中部分数据为[9,2,1,6,2,6,1,9,7,2],则其排名依次为“9 3 1 6 3 6 1 9 8 3”。实现该功能的程序段如下,方框中应填入的正确代码为( )
b=[0]*10
for i in a:
b[i] +=1
print(s)
A.for i in range(1,10):
b[i] += b[i-1]
s=""
for i in range(100):
s+= str(b[a[i]]) +""
B.c= [0]*10
for i in range(1,10):
c[i] = b[i-1] + c[i-1]
s= ""
for i in range(100):
s+=str(c[a[i]] +1)+""
C.c=[0]*10
for i in range(1,10):
c[i]= b[i-1]+c[i]
s=""
for i in range(100):
s+= str(c[a[i]]+1) +""
D.c=[0]*10
for i in range(10):
c[i]= b[i] + c[i-1]
s=""
for i in range(100):
s+= str(c[i])+""
A.A B.B C.C D.D
5.在 Python 语言中,ID="2023180701",则ID的数据类型是( )
A.整型 B.浮点型 C.布尔型 D.字符串
6.在 Python 中,执行如下语句段后,输出的结果是( )
a,b,c=0,1,2
if b>c:
a=c-b
print (a)
A.1 B.2 C.0 D.3
7.在编程中,复用代码的主要好处是( )
A.增加代码量 B.提高程序执行速度
C.减少代码冗余 D.增加程序复杂性
8.从高度为h处释放一个小球,每次落地后弹起的高度是前一次的一半,直到小球弹起的高度不足p时视为结束,计算小球最终经过的路程s。算法流程图如图所示,①②两处应为( )
A.①h≥p? ②s=s+h*2;h=h/2 B.①h≥p? ②h=h/2;s=s+h
C.①h>p? ②s=s+h;h=h/2 D.①h>p? ②h=h/2;s=s+h*2
9.“算法首先必须是正确的,即对于任意一组输入,包括合理的输入与不合理的输入,总能得到预期的输出”属于评价算法的( )
A.可读性 B.高效性 C.可行性 D.正确性
10.求1至10之间所有奇数和的算法描述如下:
①将1赋值给变量i;
②判断i是否能被2整除,若不是,将该数累加到变量sum中;
③将变量i加1,若i还小于或等于10,转②;
④输出sum的值;
⑤结束。
该算法采用的描述方法属于 ( )
A.流程图 B.自然语言 C.伪代码 D.计算机语言
11.有如下Python程序:
score=int(input())
if score>=90:
grade='A'
elif score>=60:
grade='B'
else:
grade='C'
print(score,grade)
运行程序,输入“78”后回车,程序的输出结果是( )
A.78 B B.78 A C.B 78 D.78 C
12.有如下Python程序段
import random
a=[0]*5
t=random.randint(1,5)*2+1
a[0]=t
for i in range(1,5):
if i%2!=0:
a[i]=a[i-1]+random.randint(1,5)*2+1
else:
a[i]=a[i-2]+random.randint(1,5)*2
执行该程序端后,列表a的值可能是( )
A.[11,21,19,28,21] B.[11,14,18,28,21]
C.[3,16,13,20,19] D.[9,14,13,22,21]
13.由于月球上没有大气,嫦娥三号无法依靠降落伞着陆,只能靠变推力发动机,才能完成中途修正、近月制动、动力下降、悬停段等软着陆任务,物体在月球上的重力加速度g=1.63m/s2,m为嫦娥三号的自身质量,N表示嫦娥三号产生的推力,并且推力会随着距离x的变化而改变,恒月运动数率具体公式如下:
算法流程图如下:
图中判断框②处应填入的是( )
A.x≤100 B.x≥4 C.x≤4 D.x>100
14.某APP为鼓励用户积极签到,制定积分签到政策,用户第一次连续签到可以得到1分,第二次连续签到得2分,第三次连续签到得到4分,接下来,每次得分分别为8,16,32……。若签到中断,则前面签到所得积分清空,重新从第一天开始积分。当用户积分达到10000分时,可以兑换相应奖品,小明想得到的毛绒娃娃需要20000积分,请设计算法帮小明计算,需要至少连续签到多少天才能拿到毛绒娃娃。解决此问题的算法流程图如右图所示,请为虚线框选择合适的流程图基本图形并为①处选择合适代码( )
A. sum_jf=sum_jf+jf B. sum_jf=sum_jf+jf
C. sum_jf=jf+jf D. sum_jf=jf+jf
15.有如下Python程序段:
import pandas as pd
s1 = pd. Series (["学习", "运动", "睡觉", "吃饭"], index = ["01", "02", "03", "04"])
sl ["03"] = "休息"
bm = s1. index
sub = s1. values
time = [40,90,79,30]
num = [13,2,10,3]
col = ["活动", "时长", "次数"]
data = {"活动": sub, "时长": time,"次数": num}
df1= pd. DataFrame (data, index = bm, columns = col)
print (df1[df1 ["时长"]*df1["次数"]>120])
运行该程序段,输出显示的结果为( )
活动时长次数
A. B.
C. D.
16.下列表达式的值为True的是( )
A.2**3<2*3 B."st" in "Student" C.not 1==1 and 0!=l D.len (["a", "ab"])==3 or int (5/2) ==5//2
二、填空题
17.编程语言中的 允许开发者定义具有特定属性和方法的对象。
18.在Python中,使用 可以进行字典的遍历。
19.在符号运算中,表示“当且仅当”的逻辑结构通常用符号 表示。
20.角谷猜想是指一个正整数x,如果x是奇数,则乘以3再加1;如果是偶数,则除以2。这样经过若干次运算后,总是可以得到自然数1的结果。小明根据角谷猜想进行了算法设计,并用如下流程图来描述算法。
请回答下列问题:
(1)解决此问题所使用的算法控制结构是 。
(2)根据本题算法的流程图所示,则流程图中①②处应填写的内容分别是:
① ②
(3)若输入x的值为6,则输出的运算次数n为 。(填数字)
21.如图所示算法,有一数列:1、2、2、4、8、32、256…求这个数列的第n(n>=3)项,则空白横线处用a、b、c组成一个表达式,应填 。
三、判断题
22.在函数内部,既可以使用global关键字来声明使用外部全局变量,也可以使用global关键字直接定义全局变量。( )
23.程序实际上是一组机器操作的指令或语句的序列,程序有三种基本控制结构:顺序结构、选择结构和循环结构。( )
24.在Python3.x语言中,input()函数的返回值类型是字符串。( )
25.算法的每一个步骤可以对应程序中一条或多条语句,每条语句最多只能实现一个操作。( )
四、操作题
26.请为老师完善一个课堂上随机抽取学生回答问题的算法。已知“从5位学生中随机抽取1位学生”的算法,学生名单、流程图、代码如下表所示。
Stuname[0]
Stuname[1]
Stuname[2]
Stuname[3]
Wangmin
Zhangyi
Lili
Songju
import random
stuname=[“Wangmin”,“Zhangyi”,“Lili”,“Songju”,“Wuyi”]
x=random.randint(0,4)
print(stuname[x])
(1)关于语句“import random”与“x=random.randint(0,4)”,以下分析正确的是( )
A.导入Python random模块,随机函数random.randint(0,4)生成随机[0,4]之间的整数
B.随机函数,random.randint(0,4)能随机生成一个任意整数
C.随机函数,random.randint(0,4)能随机生成[1,5]之间的实数
D.随机函数,random.randint(0,4)能随机生成一个任意实数
(2)关于列表status和变量m的作用,以下理解正确的是( )
A.列表status是用于存储下标与stuname对应的学生是否被点过名的状态;变量m无任何作用
B.列表status是用于存储下标与stuname对应的学生是否被点过名的状态,值0表示“没被点名”,1表示“已被点过名”;变量m用来计数统计学生人数是否大于2个
C.列表status是用于存储0或1,与数组stuname无关;变量m用来计数统计学生人数是否大于2个
D.列表status是用于存储0或1,与数组stuname有关;变量m用来计数统计学生人数是否大于2个
(3)请将代码横线处补充完整,使算法满足如下功能:从5位学生中随机抽取2位学生,每次抽取的学生不能重复。
stuname=[“Wangmin”,“Zhangyi”,“Lili”,“Songju”,“Wuyi”]
#以下初始化列表status,0表示未被点过名
status=[0,0,0,0,0] #以下随机显示2位学生姓名,要求不重复
import random
m=0
for i in range(0,2):
while True:
x=①
print(x)
if ② :
print(stuname[x])
status[x]=1
m=m+1
if m>=2: #点名学生人数满足2个跳出循环终止统计
break
27.max=a[0]
min=a[0]
s=0
for i in range(6):
s=s+a[i]
if a[i]>max:
max=a[i]
if a[i]<min:
min=a[i]
aver=( )/4
(1)在引用tkinter模块进行界面设计的过程中,窗体中录入评委打分的对象是由 控件生成的。
A.Entry B.Label C.Frame D.Button
(2)题目中算法描述采用的是 。
A.自然语言 B.伪代码 C.流程图 D.N—S图
(3)下列程序代码片段对应于算法插述中的第2步至第4步。请填写片段中空白处的表达式填写完整:
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查算法相关内容。算法是指为解决一个问题而采取的有限个方法或步骤。一个问题可以有多个算法;可行性要求理论和实际都需要可行;算法必须有输出;算法中数据的存储包括原始数据、计算中间结果、最终结果。故本题答案是D选项。
2.C
【详解】本题考查Python程序设计相关内容。结合题目内容分析四个选项,ABD选项可以实现题目要求。C选项,采用if...if...else结构描述题目内容,若bmi>23.9成立,输出“超重”,再执行判断18.5<= bmi<=23.9,不成立,执行else,成立,输出“偏瘦”,即bmi>23.9成立时输出两个结果:“超重”、“偏瘦”,不符合题目要求,选项错误。故本题答案是C选项。
3.B
【详解】本题考查关系表达式。表示变量score不高于120的表达式应该是score<=120。故选择B。
4.B
【详解】本题考查Python程序设计相关内容。结合题目内容,以a中部分数据[9,2,1,6,2,6,1,9,7,2]为例,分析四个选项:将A选项程序段代入方框处,其运行结果为:10 5 2 7 5 7 2 10 8 5,不符合题目中的排名,选项错误。将B选项程序段代入方框处,其运行结果为:9 3 1 6 3 6 1 9 8 3,符合题目中的排名,选项正确。将C选项程序段代入方框处,其运行结果为:1 3 1 1 3 1 1 1 3 3,不符合题目中的排名,选项错误。将D选项程序段代入方框处,其运行结果为:0 2 5 5 5 5 7 8 8 10,不符合题目中的排名,选项错误。故本题答案是B选项。
5.D
【详解】本题考查Python数据类型。Python中,字符串用双引号或单引号标识,ID="2023180701",则ID的数据类型是字符串。故选D。
6.C
【详解】本题考查Python分支结构的应用。a=0,b=1,c=2,不满足if判断条件,因此输出a的值是0。故选C。
7.C
【详解】本题考查编程的描述。复用代码的主要好处是减少代码冗余。通过复用代码,可以避免重复编写相同的代码,从而减少代码量,提高代码的可维护性和可读性。选项A和D都是不正确的,因为复用代码不会增加代码量或程序复杂性。选项B虽然有时复用代码可以间接提高程序执行速度,但这不是复用代码的主要目的。故选C。
8.A
【详解】本题考查算法流程图相关内容。分析题目内容及流程图,推知,若h≥p成立,重复执行循环体,即计算路程s,由“从高度为h处释放一个小球,每次落地后弹起的高度是前一次的一半”知,路程s计算公式为s=s+h*2,当前弹起的高度是前一次的一半,即h=h/2,所以①处应填写:h≥p?,②处应填写:s=s+h*2;h=h/2。故本题答案是A选项。
9.D
【详解】本题考查的是算法评价。算法正确性是对任意一个合法的输入经过有限步执行之后算法应给出正确的结果。算法正确性证明包括两个方面:①证明关于输入与输出之关系的命题是正确的;②证明算法中的公式及计算方法是正确的。“算法首先必须是正确的,即对于任意一组输入,包括合理的输入与不合理的输入,总能得到预期的输出”属于评价算法的正确性。故本题应选D。
10.B
【详解】本题考查的市算法描述。算法描述常见有:流程图、自然语言、伪代码等。用自然语言描述算法,就是用人们日常所用的语言,如汉语、英语等来描述算法。本题算法采用的描述方法属于自然语言。故本题应选B。
11.A
【详解】本题主要考查Python多分支结构。输入78后回车,满足elif score>=60部分grade='B',故程序的输出结果是78 B。选A。
12.D
【详解】本题考查Python程序。首先生成一个随机的奇数t并赋值给a[0]。然后根据循环条件,当i为奇数时,a[i]为前一个数加上一个奇数;当i为偶数时,a[i]为前两个数加上一个偶数。逐一分析选项,A选项中21不可能由11加上一个偶数得到,B选项中28不可能由18加上一个奇数得到,C选项中16不可能是通过给定条件计算得出,只有D选项符合程序运行逻辑,可能得到这样的结果。故答案为:D。
13.B
【详解】本题考查if判断语句。从第一个if判断条件为真时候,执行x>100的表达式。说明该判断条件则是x>100。当该判断为假时,执行下一个if语句判断,说明这时x<100,但是否大于等于4,需要判断。故第二个if语句的判断条件为x>=4,如果大于等于4,则执行相应的表达式,否则执行x<4的表达式。故选择B。
14.A
【详解】本题考查的是流程图识读。菱形是条件判断框,平行四边形是数据输入/输出框,圆角矩形是开始/结束框,矩形是数据处理框。虚线框中应使用菱形框;用变量sum_if累计积分,jf表示每次得到的积分,故此处填sum_jf←sum_jf+jf或sum_jf=sum_jf+jf或sum_jf+=jf。故选A。
15.B
【详解】本题考查的是程序调试与运行。根据最后一行语句可知,筛选的是时长和次数之积大于120的数据。根据倒数第二行语句可知,索引是bm,列标题是col。故本题应选B。
16.D
【详解】本题考查Python表达式相关内容。A选项,2**3<2*3-->8<6-->False。B选项,"st" in "Student"-->False。C选项,not 1==1 and 0!=l-->False and True-->False。D选项,len (["a", "ab"])==3 or int (5/2) =5//2-->2==3 or 2==2-->False or True-->True。故本题答案是D选项。
17.类(Class)
【详解】本题考查面向对象编程语言。
在编程语言中,类是一种非常重要的概念,它允许开发者定义具有特定属性和方法的对象。通过类,开发者可以创建出具有相似属性和行为的对象集合,这些对象可以是现实世界中实体或概念的抽象表示。故正确答案为:类。
18.items() 或 iter()
【详解】本题考查Python。在Python中,字典的items()方法返回一个包含字典中所有键值对的可迭代对象,通过遍历这个可迭代对象可以同时获取键和值。iter()函数用于获取一个迭代器对象,也可用于字典的遍历。故答案为:items() 或 iter()。
19.↔
【详解】本题考查符号运算。“↔”表示双条件关系,即两个命题同时为真或同时为假。
20. 循环结构 x=1?或者x等于1? xx*3+1 8
【详解】本题考查的是算法相关知识。(1)流程图具有典型的循环结构的特点。(2)①处填写判断条件x=1?②处填写处理过程x←x*3+1。(3)若x=6,6/2=3,3*3+1=10,10/2=5,5*3+1=16,16/2=8,8/2=4,4/2=2,2/2=1,经过8次计算结果为1,故答案为8。
21.c=a∗b
【详解】本题考查的是流程图识读。观察数列:1、2、2、4、8、32、256…,可知an=an-2*an-1(n>=3),故空白横线处应填:c=a∗b。
22.正确
【详解】本题考查Python基础。
global关键字的作用是告诉Python在函数内部使用全局变量而不是局部变量。如果在函数内部使用global关键字来声明变量,而在函数外部没有声明相同的变量,Python会创建一个新的全局变量。故正确。
23.正确
【详解】本题主要考查程序基本控制结构。程序实际上是一组机器操作的指令或语句的序列,程序有三种基本控制结构:顺序结构、选择结构和循环结构,表述正确。
24.正确
【详解】本题考查Python函数。input()函数用于从标准输入读取一行,并将其作为字符串返回。无论用户输入什么内容,input()函数返回的值始终是字符串类型。故说法正确。
25.正确
【详解】本题考查的是算法相关知识。算法的每一个步骤可以对应程序中一条或多条语句,每条语句最多只能实现一个操作。题干中说法正确。
26. A B x=random.randint(0,5) status[x]==0
【详解】本题考查程序分析。
(1)A选项是正确的。import random确实导入了Python的random模块,该模块提供了生成随机数的功能。random.randint(0,4)函数则用于生成一个指定范围内的随机整数,包括两端的值,即在这个例子中,它会生成0到4之间的一个随机整数(包括0和4)。B这个选项是错误的。random.randint(0,4)生成的整数是有限制的,即在0到4之间,而不是任意整数。C这个选项也是错误的。random.randint(0,4)生成的是整数,而不是实数,且范围是在0到4之间,而不是1到5之间。D选项同样是错误的。random.randint(0,4)生成的是整数,不是实数,且范围有限制。故正确答案为:选项A。
(2)选项A,错误。变量m用来计数统计被点名的学生人数是否大于2个。选项C,错误。列表status是用于存储0或1,与数组stuname有关。选项D,错误。并没有说清楚列表status是用于存储0或1,与数组stuname有关的原因。故正确答案为:选项B。
(3)①变量x存储产生的随机数,故列表的下标。故正确答案为:x=random.randint(0,5)。②if语句判断随机产生的学生是否已经被点过名,故需要判断点名状态值,故正确答案为:status[x] == 0。
27. A B s-max-min
【详解】本题主要考查Python程序的执行与调试。①处,在引用tkinter模块进行界面设计的过程中,窗体中录入评委打分的对象是由Entry控件生成的(Entry 是Tkinter 用来接收字符串等输入的控件,该控件允许用户输入一行文字),故选A选项。②处,伪代码(Pseudocode)是一种非正式的,类似于英语结构的,用于描述模块结构图的语言。题目中算法描述采用的是伪代码,故选B选项。③处,从总分中s中去掉最高分max和最低分min,求出其他4位评委的平均分aver作为选手的最终得分,故此处填s-max-min。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$