内容正文:
第2章 算法与程序实现
一、选择题
1.下列关于算法的描述正确的是( )
A.算法只能用流程图来表示 B.一个算法,当没有输入时,也没有输出
C.一个算法的执行步骤可以是无限的 D.一个算法可以没有输入
2.input()函数的功能是从键盘输入数据,返回的值是下面哪种数据类型( )
A.整数 B.浮点数 C.字符串 D.布尔型
3.已知a、b为整型变量,下列表达式的值一定为True的是( )
A.a!=b B.a>=b and b>=a C.a>=b or b>=a D.a<=b
4.下列关于列表的说法正确的是( )
A.列表中的数据是无序的
B.同一列表中可以包含不同的数据类型
C.列表元素的下标从1开始
D.定义列表时用()将列表元素括起来
5.某算法的部分流程图如图所示,执行这部分流程后,下列说法正确的是( )
A.输出的 a,b 值分别为 5,11
B.输出的 a,b 值分别为 5,14
C.条件 b<10 被判断了 6 次
D.语句 b←3*a-1 被执行了 4 次
6.下列VB表达式中,值最大的是( )
A.Sqr(4^4) B.Val((Mid("2021加油!",3,2)))
C.Int(Rnd*11)+10 D.42 mod 20
7.以下选项中算法功能对应的流程图是( )
图1 图2 图3 图4
A.图3:求任意两个数的商 B.图4:求一个数与自然数的商
C.图1:求1+2+3+4+…+100的和 D.图2:求x的绝对值
8.运行以下程序,输出的结果是( )
a=12
b=4
print(a/b)
A.3 B.4 C.3.0 D.0
9.描述算法的部分流程图如图所示,此算法的控制结构属于( )
A.顺序结构 B.分支结构 C.循环结构 D.树形结构
10.关于以下流程图的说法不正确的是( )
A.该算法作用是输入两个数,输出较大的数。
B.该算法中没有体现“运算”。
C.该算法具有分支结构(选择结构)。
D.如果输入的a、b分别为3和5,则算法的输出为5。
11.下列选项中,( )的布尔值不是False。
A.None B.0 C.( ) D.1
12.已知a=3,b=4,c=5,则下列Python表达式的结果与其他三项不同的是( )
A.a>b or b<c and c>a B.not a%2==b%2
C.int(a*c//b)!=a D.c>=a<=b
13.某算法的部分流程图如图所示,若n的值为8,key的值为40,数组元素a[0]至a[n-1]依次存放10,20,30,40,50,60,70,80,执行这部分流程后,输出c的值为( )
A.-2 B.-1 C.0 D.1
14.下面Python程序代码
a=10
b=20
a,b = b,a
print(a,b)
执行后的值正确的是( )
A.20,10 B.10,10 C.20,20 D.10,20
15.下列Python 表达式中, 值为 True 的数量有( )个
① int(-2**3-9/5) == -10 ② "sy" in "yes"*2 ③ 23//4>4 and 3/2<1 ④ not(2**3<9) or 6%4<2 ⑤ "9"<"10"
A.1 B.2 C.3 D.4
16.已知如下Python函数:
def f(x, n):
if n==1:
return x
else:
return x*f(x-1, n-1)
下面表达式值最大的为( )
A.f(5,6) B.f(5,7) C.f(-5,6) D.f(-5,7)
二、填空题
17.算法是解决问题的方法,它具备有穷性、确定性、有零个或多个输入、有一个或多个输出、 等特征。
18.执行下列语句,输出结果是: 。
a=[[1,3],[1,2],[2,4],[2,5],[4,-1],[3,1]]
a[1]=[3,6]
print(a[1][1]+a[-2][1])
19.在符号运算中,表示“当且仅当”的逻辑结构通常用符号 表示。
20.若输入 16 和 12,输出结果是 。
21.以下流程图中,输出结果 。
22.有100位同学排成一列,从第一位同学开始按1至100的序号进行报数,所报序号含有6的同学需要出列。则判断序号x是否出列的Python表达式是: 。
三、判断题
23.在 Python 程序设计语言中,表达式 17﹪2 的值为 1。( )
24.流程图中表示判断的是菱形框。( )
25.在Python语言中,若n=6,m=3,则表达式m+3==n and n-3>=m的值为False。( )
26.执行程序时,程序中的每一条语句至少要运行一次。( )
27.算法是随着计算机的发展而产生的,没有计算机就没有算法。( )
28.在程序中,x=y与y=x是不一样的。( )
四、操作题
29.藏头诗是一种特殊的诗歌形式,其特点是作者将想要表达的意思隐藏在每句诗的某个字中,当这些字连贯起来时,便能传达出特定的信息。藏头诗主要有以下几种常见形式:
“首藏”,将信息藏于每行的首字。如图a所示。
“中藏”,将信息藏于每行除开头和结尾的中间位置,比如每行第2个字。
“尾藏”,将信息藏于每行的结尾。
“斜藏”,将信息藏于第一行第1个字,第二行第2个字,……如图b所示。
图 a 图 b
图 c
请回答下列问题:
(1)实现上述功能的部分Python程序如下,程序运行效果如图c所示。请在划线处填入合适的代码。
s=input("请输入藏头诗:")#整首诗不换行输入
① ; n=len(s); d=[]
while i < n and s[i]!=",":
i+=1
m=i
i=0 #分别按"首藏、中藏、尾藏"形式提取隐藏信息
while i < m:
f="";②
while j < n:
f+=s[j]
j+=m+1
d.append(f) #将 f 添加到列表 d 的末尾
i+=1
f="";j=0 #按"斜藏"形式提取隐藏信息
while j < n:
f+=s[j]
③
d.append(f)
print("作者想要传递的信息可能是:
", d)
(2)若输入如第图b所示的藏头诗,存放隐藏信息的列表d中元素个数有 个。
30.某市居民用电实施分阶梯计费,具体计费方式如图a所示。
请回答下列问题:
(1)要计算某月电费,首先分析问题并提炼核心要素,如图b所示,其中变量的数据类型应当为 (单选,填字母:A.整型;B.实型;C.字符串型)。
(2)根据图a所示的阶梯计费方式,建立计算月电费的模型(不考虑一个月内出现多个阶梯电价的情况).
①在模型的划线处填入正确的数学表达式 。
②计算月电费所用到的算法是 (单选,填字母:A.解析算法/B.枚举算法).
(3)下列Python程序段中,能根据当前年用电量total判断其所处阶梯的是 。
A. B. C.
(4)若电价政策改变,峰谷电价均会随之变化,则第(2)小题中的模型不具备普遍性,请描述修改该模型的方法 。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查算法相关内容。算法的描述方式有:自然语言、流程图、N-S图、伪代码和程序设计语言。一个算法可以没有输入,但是必须有输出。算法必须在有限步骤之内完成。ABC选项说法错误,D选项正确。故本题答案是D选项。
2.C
【详解】本题主要考查Python输入函数。iput()函数的功能是从键盘输入数据,返回的值是字符串型,故本题选C选项。
3.C
【详解】本题考查Python基础。
a和b的关系为有三种可能即大于、小于或等于,选项C表达了这三种关系,故正确答案为:选项C。
4.B
【详解】本题考查的知识点是列表的知识。在Python中,列表是一种有序的可变数据类型,用于存储多个元素,元素类型任意。列表使用方括号[]来定义,而不是圆括号(),列表元素的下标从0开始。所以选项A、C、D错误。故答案为B选项。
5.A
【详解】本题主要考查算法流程图的执行。a=1,b=0,第一次循环 ,满足b<10,a mod 2=1,a=a+1=2;第二次循环,满足b<10,a mod 2=0,b=3*a-1=5,a=a+1=3;第三次循环,满足b<10,a mod 2=1,a=a+1=4;第四次循环,满足b<10,a mod 2=0,b=3*a-1=11,a=a+1=5;第五次循环,不满足b<10,输出a,b的值分别为5,11。执行这部分流程后,条件 b<10 被判断了 5 次,语句b←3*a-1 被执行了 2 次,故本题选A选项。
6.B
【详解】本题主要考查VB表达式。Sqr()是开方函数,故Sqr(4^4)=4,Val()是将字符串转换为整型,Mid() 是字符串截取函数,故Val((Mid("2021加油!",3,2)))=Val("21")=21,Int(x)是返回不大于x的最大整数,Rnd是随机生成[0,1)之间的数,故Int(Rnd*11)+10是随机生成[10,20]之间的整数,42 mod 20=2,故值最大的是Val((Mid("2021加油!",3,2))),故本题选B选项。
7.C
【详解】本题考查流程图。A选项错误,求任意两个数的商首先需要判断除数是否为0,流程图中缺少该步骤;B选项错误,求一个数与自然数的商,该自然数并未给出;C选项正确,通过(首项+末项)×项数÷2来计算1到100的和。D选项错误,该流程图没有输出。故答案为:C。
8.C
【详解】本题主要考查Python程序的执行。“/”是除运算符,a=12,b=4,因此a/b=3.0,故本题选C选项。
9.C
【详解】本题考查流程图与程序结构相关内容。程序结构有三种基本结构:顺序结构、分支结构、循环结构。通过观察流程图:在x>y条件成立的情况下,执行x=x-1,y=y+1;后,流程又转回到判断x>y条件是否成立。可以得知,该流程图描述的是循环结构。D选项树型结构是数据结构中的一种非线性结构,不属于程序结构,选项错误。故本题答案是C选项。
10.B
【详解】本题考查的是流程图识读。该算法作用是输入两个数,输出较大的数,有分支结构,如果输入的a、b分别为3和5,则算法的输出为5。该算法中比较也是一种运算,故选项B错误。
11.D
【详解】本题考查的是Python数据类型。在Python中,布尔值为False有None、所有的值为零的数、空的字符串、空的字典、空的列表、空的元组。故本题应选D。
12.C
【详解】本题考查Python表达式。选项A:a>b为假,b<c and c>a为真。逻辑运算中,or只要有一个为真结果就为真,and只有两个都为真结果才为真。所以表达式的结果为真。选项B:a%2==1,b%2==0,所以a%2==b%2为假,not取反后结果为真。选项C:a*c//b=3*5//4=3,int(a*c//b)=3,a=3,所以int(a*c//b)!=a为假。选项D:c>=a为真,a<=b为真,所以c>=a<=b为真。故答案为:C。
13.D
【详解】本题考查程序分析。程序运行过程:
i=0,j=7,i<=j, m=3,不满足a[m]<key,则i=0, j=2, c=-1
i=0,j=2,i<=j, m=1,满足a[m]<key,则i=2, j=2, c=0
i=2,j=2,i<=j,m=2, 满足a[m]<key,则i=3, j=2, c=1
i=3, j=2,i<=j,不满足循环条件,退出循环,c=1,故选择D。
14.A
【详解】本题考查的是Python顺序结构。语句a,b = b,a表示交换变量a,b里的值,故执行后的值正确的是20,10选项A正确。
15.A
【详解】本题考查的是Python表达式。"sy" in "yes"*2值为 True ,其余均为False,故选A。
16.C
【详解】本题考查程序分析。程序为递归算法。故可知f(5,6)=0,f(5,7)=0,f(-5,6)=151200,f(-5,7)=-1663200。故选择C选项。
17.可行性
【详解】本题考查算法的描述。算法是解决问题的方法,它具备有穷性、确定性、有零个或多个输入、有一个或多个输出、可行性等特征。
18.5
【详解】本题主要考查Python列表的操作。a=[[1,3],[1,2],[2,4],[2,5],[4,-1],[3,1]],执行完a[1]=[3,6]后,a=[[1,3],[3,6],[2,4],[2,5],[4,-1],[3,1]]。a[1][1]+a[-2][1]=6+(-1)=5。
19.↔
【详解】本题考查符号运算。“↔”表示双条件关系,即两个命题同时为真或同时为假。
20.4
【详解】本题考查的是流程图识读。阅读流程图可知,这是采用辗转相除法求最大公约数。16和12的最大公约数是4。
21.107
【详解】本题考查的是流程图的识读。由流程图可知如果当前是黑色框时,才执行s=s+i,碰到井线框时候才会右转90度。结合图形,可知当i为2、3、4、10、11、12、18、22、25时为黑色。故s=2+3+4+10+11+12+18+22+25=107。
22.x%10==6 or x//10==6
【详解】本题考查的是Python表达式。1至100的序号是否含有6,既个位数为6或十位数为6,故其表达式为:x%10==6 or x//10==6。
23.正确
【详解】本题主要考查Python表达式的运算。“%”是取余,17%2=1,故表述正确。
24.正确
【详解】本题考查流程图。流程图中矩形框表示处理框,菱形框表示判断框,圆形框(圆角矩形框)表示起止框。故表述错误。
25.错误
【详解】本题主要考查Python表达式的运算。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。若n=6,m=3,则表达式m+3==n值为True,表达式 n-3>=m值为True,则表达式m+3==n and n-3>=m的值为True,故表述错误。
26.错误
【详解】本题考查的是程序相关知识。在选择语句中,有些语句可能没有运行。故题干中说法错误。
27.错误
【详解】本题考查的是算法相关知识。算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。没有计算机也有算法,故题干中的说法是错误的。
28.正确
【详解】本题考查程序设计中赋值语句的理解。在Python程序中,x=y是将y的值赋给x,y=x是将x的值赋给y,因此,x=y与y=x是不一样的。故正确。
29. i=0 j=i j+=m+2 或 j=j+m+2 8
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,推知:
(1)①处,下文while循环是从头开始遍历s,直到字符串结束或遇到",",所以此处应将i初始值设置为0,故此处答案是:i=0。②处,此处所在双重循环以“首藏、中藏、尾藏”形式提取隐藏信息,每行诗字数为m,通过j的变化,每次读取一行诗的第i个字,f每次以追加的方式将提取的信息连接成字符串,所以j的初始值为i,故此处答案是:j=i。③处,此处所在循环以“斜藏”形式提取隐藏信息(将信息藏于第一行第1个字,第二行第2个字,……),分析“斜藏”特点,第二行诗的第2个字与第一行第1个字距离为m+2,第三行诗的第3个字与第二行诗的第2个字距离为m+2,……,故此处答案是:j+=m+2 或 j=j+m+2。
(2)输入如图b所示的藏头诗,其运行结果为:['高青不独', '歌山惧爱', '一笑流绿', '曲我浊水', '对痴雷素', '天狂霆深', '吟人怒潭', '高山流水'],共8个元素,故④处答案是:8。
30. B m×0.618+(k−m)×0.338 A A 定义6个变量分别保存不同阶梯的峰谷电价
【详解】本题考查程序分析。
(1)计算变量均有小数,故应该为实型。故选择B。
(2)①根据其它模型的计算可知需要改变峰谷电价。故填写m×0.618+(k−m)×0.338。②根据电价模型,不需要枚举,故为解析算法。故正确答案为选项A。
(3)选项B,当total大于4800时,运行结果输出第二阶梯。故错误。选项C,当total<=2760时,既输出第一阶梯又输出第三阶梯。故错误。故正确答案为选项A。
(4)由于该程序电价为常数,当电价政策改变时,需要修改程序,故不具有普遍性。故将电价抽象成变量,更具有普遍性。故定义6个变量分别保存不同阶梯的峰谷电价。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$