内容正文:
第二章 算法与程序实现
一、选择题
1.高级语言更接近自然语言,并不特指某种语言,也不依赖于特定的计算机系统,因而更容易掌握和使用,通用性也更好,下列不属于高级语言的是( )
A.Java语言 B.Python语言 C.汇编语言 D.C语言
2.某算法的流程图如下图所示,若输入a和b的值分别为18和20,则输出的值为( )
A.a B.b C.18 D.20
3.函数里有多个参数时,用( )隔开
A.、 B.; C.: D.,
4.某校要筛选出身高(t)165厘米~185厘米之间,并且体重(w)在52公斤及以上的学员,下列Python逻辑表达式正确的是( )
A.165<=t<=185 or w>=52 B.165<=t<=185 and w>=52
C.t<=165 or t>=185 or w>=52 D.t<=165 or t>=185 and w<=52
5.运行如下Python程序,输入文字“吃葡萄不吐葡萄皮”,输出结果为( )
text=input("请输入一段文字:")
for i in text:
if i=="葡":
continue
print(i,end="")
A.葡 B.皮 C.吃 D.吃萄不吐萄皮
6.流程图描述的算法执行结果是( )
A.5 3 B.3 5 C.2 5 D.1 3
7.matplotlib 是一个绘图库,使用其中的pyplot子库所提供的函数可以快速绘图和设置图表的坐标轴、坐标轴刻度、图例等。以下哪个函数可以用来绘制线形图( )
A.plot B.bar C.scatter D.show
8.若a,b,c为互不相同的整数,要找出它们中最小的数。以下Python程序段不可行的是( )
A.
k=a
if k>b and b<c:
k=b
elif k>c:
k=c
print (k)
B.k=a
if k>b:
k=b
if b<c:
k=b
else:
k=c
print (k)
C.
if a<b and a<c:
k=a
elif b<c:
k=b
else:
k=c
print (k)
D.
if a<b:
k=a
else:
k=b
if c<k:
k=c
print (k)
A.A B.B C.C D.D
9.在Python中,以下运行结果为真的是( )
A.3*2>5 and 4//2>2 B.1+1!=2 or 2-1==1
C."python"<"C++" D.not 3>2
10.利用冗余压缩的方法对字符串进行压缩,例如字符串“aabbbcccd”,压缩后为“a2b3c3d1”。实现上述压缩功能的Python程序如下:
s=input("请输入长度大于1的待压缩字符串:")
ys=s[0]; k=1
for i in range(1,len(s)):
print("压缩后的结果为:",ys)
在程序方框处应填入的代码是( )
A. B. C. D.
A.A B.B C.C D.D
11.关于算法,下列叙述正确的是( )
A.解决任何一个具体问题只有一种算法 B.流程图只是算法的一种表示形式
C.一种算法只能用一种程序语言来实现 D.算法是解题方法的精确描述,可以有无限个步骤
12.在Python中,正确调用random模块的语句是( )
A.return random B.import random C.read random D.open random
13.下列算法的输出结果是( )。
A.3 B.7 C.10 D.17
14.输入一个四位正整数, 判断该四位正整数每一位上的数字是否有重复。实现上述功能的Python 程序段如下:
n = int(input("请输入一个四位正整数:"))
f = [0] *
while n > 0:
y = n % 10
n = n // 10
if sum(f) == 4:
print("没有重复的数字。")
else:
print("有重复的数字。") 方框中的(1)和(2)可选的代码有:①10;②4;③f[y]+=1;④f[y]=1下列选项中,代码顺序正确的是( )
A.①③ B.②③ C.②④ D.①④
15.某算法的部分流程图如图所示,若输入m的值是6,执行这部分流程后,s,i的值分别是( )
A.2,4 B.0,4 C.6,4 D.4,6
16.有如下Python程序段:
st=[0]*len(a)
top=-1
temp=[]
for i in range(len(a)):
top+=1
st[top]=a[i]
while len(temp)!=0:
top+=1
st[top]=temp.pop()
若a=[29,10,13,19,25,18],执行上述代码,下列说法正确的是( )
A.该段代码的时间复杂度为0(n)
B.交换①②加框处代码,对运行结果没有影响
C.运行过程中列表temp长度最大值为4
D.运行后st=[10,13,18,19,25,29]
17.有如下Python程序段:
s=input()
word=[]
for i in range(len(s)):
for j in range(i+1,len(s)):
if s[i:j]not in word:
word.append(s[i:j])
ifs[i:]not in word:
word.append(s[i:])
n=len(word)
执行该程序段,输入“ababa”,则n的值是( )
A.7 B.8 C.9 D.10
二、填空题
18.Python可以在同一行中使用多条语句,语句之间使用 分隔。
19.一张单据上有一个五位数的编号,万位数是1,千位数是4,十位数是7,个位数是3,百位数已经模糊不清,只知道该五位数是57或67的倍数,找出所有满足这些条件的五位数并输出。如图所示,把流程图填写完整 、 。
20.一段程序代码的流程图如图所示,这段程序的运行结果为S= 。
21.Python中读写文本文件的方法,其中打开用 把外存储器里的文本文件(.txt)打开;存储用 将内存中的数据存储到外存储器的文件中;关闭文件时一定要用 关闭文件。
22.用Python表达式补充完成如下程序,统计四位奇数中满足能被23和19整除的总数。
s=0
for i in range(1001,10000,2):
:
s=s+1
print(s)
三、判断题
23.早期的程序设计语言是由二进制代码指令组表示的,这样的语言能被计算机直接接收和执行,这种语言被称为“汇编语言”。( )
24.程序设计语言的发展历程:机器语言→汇编语言→高级语言。( )
25.网络爬虫是种程序或脚本,通过它可以将非结构化数据从网页中抽取出来,并以结构化的方式存储为本地数据文件。( )
26.Python语言的变量名要区分英文字母的大小写。( )
27.在使用Python语言编写程序时,注释不会影响程序结果,所以没有必要写。( )
四、操作题
28.最长连续升序子序列。随机生成n个[1,100]范围内的整数,并以环状形式存储在列表中(即列表中最后一个数据与第一个数据可构成序列),现要在列表中找出最长的连续升序子序列(即序列中后一个数比前一个数大),若有多个最长子序列,则输出最先出现的那个。程序运行界面如图所示。请回答下列问题。
请输入数据个数:10
数据序列为:[93,82,43,9,33,47,54,83,12,84]
最长连续升序子序列长度为:5
最长连续升序子序列为:9 33 47 54 83
(1) 若 n为10, 依次生成的整数为“14,15,18,11,15,16,18,9,11,13”,则最长的连续升序子序列长度为 。
(2) 实现上述功能的Python 程序段如下,请在划线处填入合适的代码。
#输入n,生成n个 [1,100]范围内的整数并存储在列表a中,代码略。
i=1
while i<=n-1:
if ① :
break
i+=1
if i==n:
k=n-1
maxs=n
else:
maxs=1
cnt=1
p1=i
②
while p1!=i-1:
if a[p1] < a[p2]:
cnt+=1
if cnt>maxs:
maxs=cnt
③
else:
cnt=1
p1=p2
p2=(p2+1)%n
print ("最长连续升序子序列长度为:", maxs)
ans=""
for i in range(maxs):
ans=str(a[k])+ ""+ans
k=(k-1)%n
print("最长连续升序子序列为:", ans)
29.已知一个算法, 程序段和流程图如下图,把程序段补充完整。
s=0
for i=1 to ①
s= ②
next ③
print “s=”; s
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题主要考查程序设计语言。汇编语言属于低级语言,Java语言、 Python语言、C语言均属于高级语言,故本题选C选项。
2.D
【详解】本题考查算法流程图相关内容。分析流程图可知,需要判断“a>b”是否成立,成立时输出a的值,不成立时输出b的值。故本题答案是D选项。
3.D
【详解】本题考查Python函数相关内容。函数参数的作用是传递数据给函数使用,当有多个参数时,各参数之间用逗号分隔开。故本题答案是D选项。
4.B
【详解】本题考查Python逻辑表达式相关内容。A选项,表达式描述的是身高在范围之内或体重在52及以上,不符合题意。B选项,表达式描述的是身高在范围之内并且体重在52及以上,符合题意。C选项,表达式描述的是身高<=165或身高>=185或体重>=52,不符合题意。D选项,and优先级高于or,该表达式描述的是身高<=165或(身高>=185且体重>=52),不符合题意。故本题答案是B选项。
5.B
【详解】本题考查Python程序。程序首先通过input()函数获取用户输入的文本,存储在变量text中。然后程序通过for循环遍历text中的每一个字符,其中i代表当前遍历到的字符。在循环体内部,通过条件判断if i=="葡",如果当前字符是"葡",则执行continue语句,该语句会导致程序跳过当前迭代的剩余部分,直接进入下一次迭代。根据上述解析,程序运行后输出的结果是原始输入文本的最后一个字符,即"皮"。故答案为:B。
6.B
【详解】本题考查流程图。程序运行过程如下。因此,最终输出k的值为3,a的值为5。故答案为:B。
k
a
1
1
2
3
3
5
7.A
【详解】本题考查pyplot子库函数相关内容。plot是绘制折线图,scatter是绘制散点图,bar绘制柱形图,show是显示绘图对象。故本题答案是A选项。
8.B
【详解】本题考查Python程序设计相关内容。分析各选项,ACD选项均可以得出正确结果,B选项,以a=1,b=2,c=3为例,验证B选项,k=a,即k=1,此时,k>b不成立,k值未变化,b<c成立,执行k=b,k值变为2,输出b的值2,但2不是abc中得到最小值,所以B选项不能实现对任意3个数找出最小值的目的。故本题答案是B选项。
9.B
【详解】本题考查Python表达式。A选项,3*2=6,6>5为真,4//2=2,2>2为假,and运算中全真才为真,所以3*2>5 and 4//2>2为假。B选项,1+1=2,1+1!=2为假,2-1=1,2-1==1为真,or运算中一真则真,所以1+1!=2 or 2-1==1为真。C选项,在Python中比较字符串大小是按照字符的ASCII码值比较,'p'的ASCII码值大于'C'的ASCII码值,所以"python"<"C++"为假。D选项,3>2为真,not真为假,所以not 3>2为假。故答案为:B。
10.B
【详解】本题考查Python程序设计相关内容。结合题目要求,分析给定4个程序段,可知:B选项能够实现功能要求,正确。A选项,错误之处在于将条件判断(i==len(s)-1)放在了else语句内,无法实现功能要求。CD选项,无法实现功能要求:判条件判断(i!=len(s)-1)与条件判断(s[i]==s[i-1])并无相关性,只有判断完字符是否冗余并执行相应操作后才需要去判断是否到字符串末尾。故本题答案是B选项。
11.B
【详解】本题考查的是对算法的理解。一个问题可能有多种算法解决,选项A错误。一种算法可以用多种程序语言来实现,选项C错误。算法必须在有限步骤内完成,选项D错误。故本题选B。
12.B
【详解】本题考查Python模块。import是用于导入模块的关键字,正确的语法是import random。故答案为:B。
13.B
【详解】本题考查的是流程图识读。a=10,b=7,a>b成立,执行a=b=7,输出a的值为7。故本题应选B。
14.D
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,可知:f为一个长度为10的列表,按照索引号分别对应十进制数0--9(四位正整数的最高位取值1--9,其余三位取值均为0--9),(1)处应填写:10。while循环作用是将四位正整数的每一位取出来,并将其值与索引号对应的f列表元素f[y]值置为1,(2)应填写:f[y]=1。故本题答案为D选项。
15.B
【详解】本题考查的是流程图识读。初始值m=6,i=10,s=1。
i>=6成立,执行i=i-2=8,i%3=2,执行s=2*s=2;
i>=6成立,执行i=i-2=6,i%3=0,执行s=s-2=0;
i>=6成立,执行i=i-2=4,i%3=1,执行s=2*s=0;
i>=6不成立,输出s=0,i=4。选项B正确。
16.B
【详解】本题考查程序分析。该程序功能是双栈操作的降序排序算法。
选项A,该程序外层循环次数a列表长度,内层循环次数与列表a的数值有关系,即该段代码的时间复杂度并不必然为O(n)。故错误。选项B,代码交换①②加框处代码,并不影响双栈排序算法的运行结果,故正确。选项C,运行过程中temp长度最大为3,故错误。选项D,运行后结果是降序排序,并不是升序排序,故错误。故正确答案为:选项B。
17.C
【详解】本题考查计算机程序分析能力。根据程序两层for循环可知依次遍历切片字符串ababa,添加到空列表word中,不添加重复字符串。
i=0,j分别取1,2,3,4。
i=1,j分别取2,3,4。
i=2,j分别取3,4。
i=3,j分别取4。
根据代码 word.append(s[i:])可以将每次最后一个字符串添加上。
最终['a', 'ab', 'aba', 'abab', 'ababa', 'b', 'ba', 'bab', 'baba'],故C选项正确。
18.分号“;”
【详解】本题考查Python程序设计相关内容。在Python中,若把多个语句写在同一行,则语句之间使用的分隔符是分号(;),故本题答案是:分号“;”。
19. n % 57 == 0 or n % 67 == 0 k=k+1
【详解】本题考查算法流程图相关内容。分析流程图,采用的是枚举算法来解决问题。枚举算法要列举所有的可能条件,不能重复,不能遗漏。五位数上百位模糊不清,根据流程图提示信息k * 100,所以k的取值范围是0~9,而且此五位数是57或67的倍数,所以第一空填为n % 57 == 0 or n % 67 == 0,循环需要继续下去,所以第二空是k = k+1。故①处答案是:n % 57 == 0 or n % 67 == 0,②处答案是:k=k+1。
20.5
【详解】本题考查算法流程图的识读。a=5,S=1,满足判断条件a>=4,执行S=S*a=5,再输出S的值是5。
21. open函数 write方法 close方法
【详解】本题考查Python相关知识。Python中读写文本文件的方法,其中打开用open函数把外存储器里的文本文件(.txt)打开;存储用write方法将内存中的数据存储到外存储器的文件中;关闭文件时一定要用close方法关闭文件。
22.if i %23==0 and i %19 ==0
【详解】本题考查的是Python循环与选择语句。通过循环变量i遍历所有四位数的奇数,判断能否被23和19整除,只要看除完后的余数是否为0,故画线处代码为:if i %23 == 0 and i %19== 0。
23.错误
【详解】本题主要考查程序设计语言的描述。早期的程序设计语言是由二进制代码指令组表示的,这样的语言能被计算机直接接收和执行,这种语言被称为“机器语言”,故表述错误。
24.正确
【详解】本题考查程序设计语言。计算机程序设计语言的发展是从低级到高级逐步演变的。最开始是机器语言,由二进制代码组成,难以理解和编写;之后出现了汇编语言,使用助记符来代替机器指令,提高了一定的可读性;再后来发展出了高级语言,如 C、Java、Python 等,更接近人类的自然语言和数学表达式,易于学习和使用。所以程序设计语言的发展历程是机器语言→汇编语言→高级语言。故说法正确。
25.正确
【详解】本题考查网络爬虫。网络爬虫就是一种能够按照一定的规则,自动地抓取万维网信息的程序或者脚本。它能够从网页中提取出所需的非结构化数据,并将其整理成结构化的形式,存储为本地的数据文件,以便后续的分析和处理。故说法正确。
26.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
27.错误
【详解】本题主要考查Python注释语句。在Python程序中,注释语句可以增强程序的可读性,写注释非常有必要。题干说法错误。
28. 6 a[i]<=a[i-1] p2=(p1+1)%n或p2=(i+1)%n k=p2
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,推知:
(1)长度为10的序列“14,15,18,11,15,16,18,9,11,13”以环状形式存储在列表中,观察该环状序列,其最长升序子序列为:“9,11,13,14,15,18”,长度为6,故本题答案是:6。
(2)②处,结合题意及该处代码上下文,遍历整数序列,若当前数字大于前一个数字时继续遍历;若当前数字小于或等于前一个数字时应结束此次遍历,i初值为1,此处缺少判断条件,即:a[i]<=a[i-1],故此处答案是:a[i]<=a[i-1]。③处,由于该序列首尾相接,构成环状,借鉴循环队列相关知识,若要确保p2的每次递增,都会指向该环状序列,可以采用模除取余的方法实现,即:p2=(p1+1)%n,结合“p1=i”,p2=(p1+1)%n等价于p2=(i+1)%n,的故此处答案是:p2=(p1+1)%n或p2=(i+1)%n。④处,结合上下文,若cnt>maxs成立,表明最长升序子序列长度已发生变化,应将maxs更新为cnt,并保存该子序列最后元素的位置p2,即:k=p2,以便于后续操作(通过k定位最长升序子序列中的每个数字),故此处答案是:k=p2。
29. 9 s+1 i
【详解】本题考查VB算法及程序实现相关内容。观察流程图可知,该算法重复9次执行s=s+1(9个1的和)。由流程图内初值i=1及菱形框内i<=9得知,循环共执行9次,①处应填写:9;由流程图内s=s+1得知,循环体内有s=s+1,故②处应填写:s+1;由流程图内i=i+1得知,循环变量每次递增1,故③处应填写:i。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$