内容正文:
第二章 算法与程序实现
一、选择题
1.用Python语言实现“每满100减20,每满200减50,可以累计上不封顶”的优惠金额算法,设s为购买商品的原价,计算优惠金额t,下面选项正确的是( )
A.
t=s//100*20
if s//200>0:
t+=s//200*50
B.
t=s//200*50
if s%200>=100;
t=t+20
C.
if s>=200:
t=s//200*50
else:
t=s//100*20
D.
if s>=100:
t=t//100*20
else:
t=t//200*50
A.A B.B C.C D.D
2.下列Python表达式的值为True的是( )
A."12"*2>"2" B."a" in ["apple"] C.len(range(12))==12 D.3**2-7%5<int(6.8)
3.执行以下Python语句a="12";b="34";c="a"+"b"的值是( )
A."1234" B.1234 C.46 D."ab"
4.下列Python程序所表示的算法,违反的算法特征是( )
for i in range(12,39,2):
if i % 2 != 0:
print(i)
A.可行性 B.至少有一个数据输出 C.确定性 D.有穷性
5.在Python语言中,运行下面程序后,变量m的值为( )
a=8
b=16
c=32
if a>b:
m=a
else:
m=b
if c>m:
m=c
print(m)
A.1 B.8 C.16 D.32
6.有如下 Python 程序段:
sl = input();n= len(s1)
sl=sl + sl
i,j=0,1
while i<n and j<n:
k=0
while k < n and s1[i+k] == sl[j+k]:
k+=1
if sl[i+k]>s1[j+k]:
i=i+k+1
else:
j=j+k+1
if i == j:j+=1
k=min(i,j)
执行该程序段后,下列说法正确的是( )
A.变量i与变量j的和可能大于3*n
B.程序执行过程中变量i一定小于变量j
C.该算法时间复杂度为O(n2)
D.若输入s1为“abaada”,执行该程序段后k为5
7.有Python程序代码如下:
def swap(x,y):
x=x+y
y=x-y
x=x-y
print(x,y)
a=100;b=300
swap(a,b)
print(a,b)
运行上面程序,输出结果正确的是( )
A.
100 300
300 100
B.
100 300
100 300
C.
300 100
300 100
D.
300 100
100 300
A.A B.B C.C D.D
8.在生活和学习中,人们经常会运用到算法,以下关于算法的说法,错误的是( )
A.算法就是数学表达式 B.算法的一个步骤可以被多次执行
C.算法的每一个步骤都确定、没有歧义 D.算法在有限个步骤后能够结束
9.有如下Python 程序段:
#随机产生10个整型元素的非降序序列,依次存入列表:a(a[0]!=a[9]),代码略
key=int(input())
i=0;j=9
n=0
while i<=j:
m=(i+j)//2
n+=1
if a[m]<key;
i=m+1
else:
j=m-1
执行上述程序段后,下列说法不正确的是( )
A.a[i+1]可能等于key B.a[j]可能等于key C.i一定等于j+1 D.n的值一定大于2
10.在Python中,以下运行结果为真的是( )
A.3*2>5 and 4//2>2 B.1+1!=2 or 2-1==1
C."python"<"C++" D.not 3>2
11.某算法的部分流程图如图所示。
输入x的值分别是20,5,11,7,12,0,最终k的值是( )
A.2 B.3 C.4 D.5
12.在有限的步骤内解决某一问题的确切过程叫做算法。以下关于算法的描述中,错误的是( )
A.《九章算术》中用“更相减损术”求最大公约数的记载属于算法的自然语言描述
B.算法必须有输入,也必须有输出,而且可以有多个输入输出
C.任何复杂的算法最终都可以用顺序、分支、循环结构来实现
D.同一问题选用不同的算法执行效率可能会有很大差别
13.有如下 Python 程序段:
L=[21,12,13,17,16,15,20,28,11]
def shengxu(a,b):
for i in range(0,b-a);
for j in range( ):
if L[j]>L[j+1]:
L[j],L[j+1]=L[j+1],L[j]
shengxu(3,7)
print(L)
若要实现列表L中L[a]到L[b]之间的数升序排列(不改变其余元素的位置),划线处的代码应为( )
A.i,b B.0,b-i C.a,b-i D.b-1,a-i-1,-1
14.有如下 Python 程序段:
s = "1010/1100/1111"
ans,t = 0,0
for i in s:
if "0" <= i <= "1":
t = t * 2 + int(i)
else:
ans += t
t = 0
print(ans)
运行该程序段,输出结果是( )
A.12 B.15 C.22 D.37
15.下列关于算法的描述,说法正确的是( )
A.算法只能用自然语言描述
B.解决一个问题的算法是唯一的
C.同一个问题的算法不同,结果也不会相同
D.算法过程要一步步执行,每一步执行的操作必须准确
16.小明要编写一个程序,能实现对用户输入的数据,判断其为奇数还是偶数,请你帮他完成以下代码:在“if( )”处补充代码( )
n=int(input("请输入一个数: "))
if( ):
print("这是一个偶数")else:
print("这是一个奇数")
A.n/2==0 B.n//2==0 C.n%2==0 D.n%10==0
17.有如下Python程序段:
def f(s):
if len(s)==2:
return s
else:
return f(s[len(s)//2+1:]+s[:len(s)//2])
print(f("abcde"))
当执行该程序段后,显示的结果是( )
A.eb B.be C.da D.ad
二、填空题
18.在Java中,用于创建线程的类是 。
19.在编程语言中, 是指在程序执行过程中,根据条件选择执行不同代码块的语句。
20.程序设计语言包括机器语言、汇编语言和 。
21.Python中读写文本文件的方法,其中打开用 把外存储器里的文本文件(.txt)打开;存储用 将内存中的数据存储到外存储器的文件中;关闭文件时一定要用 关闭文件。
22.如图所示算法,有一数列:1、2、2、4、8、32、256…求这个数列的第n(n>=3)项,则空白横线处用a、b、c组成一个表达式,应填 。
三、判断题
23.算法有零个或多个输入、有一个或多个输出。( )
24.网络爬虫是种程序或脚本,通过它可以将非结构化数据从网页中抽取出来,并以结构化的方式存储为本地数据文件。( )
25.算法只能用自然语言来描述。( )
26.计算机程序能重复使用。( )
27.高级语言的翻译程序有两种类型:解释程序和编译程序。( )
四、操作题
28.编写Python程序,实现如下功能:打开指定位置('D:\猫头.jpg')的图片,显示图片并输出其模式信息,将当前图片转换为灰度模式('L')后,再次显示图片查看效果并输出其模式信息。程序代码和界面图如下。在划线处填上合适的代码。
from PIL import Image
im=①
im.show()
print('转换前图像的模式:',im.mode)
new_im=② #将当前图像转换为其他模式(灰度),并且返回新的图像。
new_im.show()
print('转换后图像的模式:',new_im.mode)
29.某阅卷系统可以根据学生输入的选择题答案进行对照并判分。每道选择题2分,题型为单选、多选,判分规则如下:单选题和标准答案一致得全部分数,错选或不选不得多选题和标准答案一致得2分,漏选给1分,错选或不选不得分。程序输入及输出结示例如下:
请输入你的答案,并以逗号结尾:A,B,A,B,C,ACD,AB,AD,
最终得分为:7
你的平均分为:0.88
(1)若标准答案为["A","C","A","D","B","ACD","ABD","AC"],当输入的答案是"A,C,A,B,C,ACD,ABC,A,"时,得分为 。
(2)编写Python程序如下,在划线处填入合适的代码。
def check(x,y): #x为输入的选择题答案,y为标准答案
f=0;t=0
for i in x:
if ① :
t=0
break #break表示中断循环
else:
t+=1
if t !=0:
if t==len(y):
f=2
else:
②
return f
bzda=["A","C","A","D","B","ACD","ABD","AC"]
s=input("请输入你的答案,并以逗号结尾:")
tmp="";n=0;sum=0
for i in s:
if i!=",":
tmp=tmp+i
else:
sum=sum+③
n=n+1
tmp=""
print("最终得分为:",sum)
print("你的平均分为:",round(④ ))#结果保留两位小数
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查分支语句的作用。由于优惠条件中,一个200元的优惠幅度比两个100元的更大,因此应该优先凑200元的整数,然后再看100元的。故选B。
2.C
【详解】本题考查Python基础。
A选项,结果为运算结果为:"1212">"2",返回False。
B选项,字符"a"并不在列表 ["apple"]中,返回False。
C选项,range(12) 生成一个从 0 到 11 的整数序列,长度为12,故返回True。
D选项,运算结果为:7<6,故返回False。
故正确答案为:选项C。
3.D
【详解】本题考查Python程序设计相关内容。字符串a="12",b="34",c="a"+"b"即等于"a"+"b"结果为"ab"。故本题答案是D选项。
4.B
【详解】本题考查算法特征。在给定的Python程序中,range(12,39,2)表示从12到39以步长为2进行取值,即取值为12、14、16、18、20...38。但程序中判断条件是if i%2!=0,而从这个范围取出的数都是偶数,不可能满足这个条件,所以这个程序不会有任何输出,违反了算法的“至少有一个数据输出”的特征。故答案为:B。
5.D
【详解】本题考查Python程序设计相关内容。分析代码段可知,该代码段功能是求abc三数的最大值,运行程序后,m值为32。故本题答案是D选项。
【点睛】
6.D
【详解】本题考查Python程序设计相关内容。分析程序段,A选项,由循环条件“i<n and j<n”知,变量i与变量j的和不会大于3*n,选项错误。B选项,程序执行过程中变量i不一定小于变量j,选项错误。C选项,该算法时间复杂度低于O(n2),选项错误。D选项,若输入s1为“abaada”,执行该程序段后,i值为5,j值为6,k为两者最小值,即5,选项正确。故本题答案是D选项。
7.D
【详解】本题考查Python程序。根据参数类型,本题可以直接理解成值传递模式,即函数内部变量x与外面变量x彼此独立,属于不同的存储空间,在函数内部三条语句实现了变量x与y的交换,输出为300 100。当函数结束后,在函数外面变量x,y的值并不受到影响。输出为100 300。故答案为:D。
8.A
【详解】本题考查算法的描述。算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令;算法的一个步骤可以被多次执行;算法的每一个步骤都确定、没有歧义;算法在有限个步骤后能够结束。故选A。
9.B
【详解】本题考查Python程序设计相关内容。分析该程序段可知,该程序运行过程可以二叉树描述,如图所示:。若key值大于等于a[m],执行else语句,即往左移,a[i+1]可能等于key,a[j]不可能等于key,A选项正确,B选项错误。由于while循环中没有中断语句,只有i<=j不成立时才结束循环,此时,i的值为j+1,C选项正确。n的值可以看作该二叉树的层数,其值一定大于2,D选项正确。故本题答案是B选项。
10.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。
11.B
【详解】本题考查算法相关内容。通过分析流程图,可以得知,该算法运行过程如下图所示:
故本题答案是B选项。
12.B
【详解】本题考查算法。算法不一定必须有输入,但必须有输出。例如,有些算法是自启动的、不依赖外部输入的,但最终会有输出。故答案为:B。
13.C
【详解】本题考查Python程序设计相关内容。分析程序段可知,该程序采用的是冒泡排序算法,外循环控制排序趟数,内循环控制每趟参与排序的数据及排序过程,每趟排序都会将当前序列的最大值放在序列最后,下一趟排序,该数不再参与排序,故每趟排序都从起始位置a开始,到b-i结束,划线处为:a,b-i,故本题答案是C选项。
14.C
【详解】本题考查二进制相关知识。通过分析得知,代码段功能是将前2个二进制数转换成十进制数,并计算2个十进制数的和。(1010)2=(10)10,(1100)2=(12)10。故本题答案为C。
15.D
【详解】本题考查的是算法相关知识。算法可以用自然语言、流程图、伪代码等描述,故选项A说法错误;解决一个问题的算法不唯一,故选项B说法错误;同一个问题的算法不同,结果相同,故选项D说法错误;算法过程要一步步执行,每一步执行的操作必须准确,选项D说法正确。
16.C
【详解】本题考查Python分支结构。在这段程序中,我们需要判断输入的正整数x是否为偶数。根据整数的奇偶性质,一个整数除以2的余数为0时,它就是偶数。因此,我们可以使用取余运算符(%)来判断x是否能被2整除,如果余数为0,则x是偶数,否则是奇数。C选项正确。
17.A
【详解】本题考查Python函数调用相关内容。分析该程序段,可知,该函数为递归函数,其运行过程为:(1)第一次调用f函数, f("abcde")-->len(s)=5,不等于2-->f(s[3:]+s[:2]),即f("deab")。(2)第二次调用f函数,f("deab")-->len(s)=4,不等于2-->f(s[3:]+s[:2]),即f("bde")。(3)第三次调用f函数,f("bde")-->len(s)=3,不等于2-->f(s[2:]+s[:1]),即f("eb")。(4)第四次调用f函数,f("eb")-->len(s)=2,等于2,执行return s,即"eb"。故本题答案是A选项。
18.Thread
【详解】本题考查Java程序设计相关内容。在Java中,线程(Thread)是程序执行的最小单元,它允许程序在同一时间执行多个任务。Java中的线程可以由Thread类创建,故本题答案是:Thread。
19.条件语句或选择结构
【详解】本题考查分支结构。在编程语言中,条件语句或选择结构用于在程序执行时,依据给定的条件来决定执行不同的代码块。条件语句通过对条件的判断,若条件为真(成立)则执行相应的代码块,若条件为假(不成立)则执行另外的代码块或者不执行任何操作。常见的条件语句有if语句、if-else语句、switch语句等。通过条件语句,可以使程序根据不同的情况做出不同的响应和处理,增加了程序的灵活性和逻辑性。故答案为:条件语句或选择结构。
20.高级语言
【详解】本题考查的是程序语言。程序设计语言的发展历程:机器语言、汇编语言、高级语言。
21. open函数 write方法 close方法
【详解】本题考查Python相关知识。Python中读写文本文件的方法,其中打开用open函数把外存储器里的文本文件(.txt)打开;存储用write方法将内存中的数据存储到外存储器的文件中;关闭文件时一定要用close方法关闭文件。
22.c=a∗b
【详解】本题考查的是流程图识读。观察数列:1、2、2、4、8、32、256…,可知an=an-2*an-1(n>=3),故空白横线处应填:c=a∗b。
23.正确
【详解】本题考查算法特征相关内容。算法基本特点:有穷性、可行性、确定性、输入(零或多个输入)、输出(有一个或多个输出)。故本题答案是:正确。
24.正确
【详解】本题考查网络爬虫。网络爬虫就是一种能够按照一定的规则,自动地抓取万维网信息的程序或者脚本。它能够从网页中提取出所需的非结构化数据,并将其整理成结构化的形式,存储为本地的数据文件,以便后续的分析和处理。故说法正确。
25.错误
【详解】本题考查算法。算法可以用多种方式来描述,常见的有自然语言、流程图、程序设计语言等。自然语言描述较为通俗易懂,但可能存在模糊和歧义;流程图直观清晰,能更形象地展示算法的流程和逻辑;程序设计语言则可以直接实现算法。故说法错误。
26.正确
【详解】本题考查计算机程序相关内容。计算机软件(程序)复用指的是在开发软件时,重复利用已有的代码和模块,以提高开发效率,并减少开发成本。故本题答案是:正确。
27.正确
【详解】本题主要主要考查程序的描述。高级语言的翻译程序是编译程序和解释程序。故本题正确。
28. Image.open('D:\猫头.jpg') im.convert('L')
【详解】本题考查Python程序设计相关内容。①处,Image.open(filepath)用于文件加载,将文件数据返给img图片对象,故此处答案为:Image.open('D:\猫头.jpg')。②处,图片对象.convert(mode)将当前图像转换为其他模式,并且返回新的图像,故此处答案为:im.convert('L')。
29. 9 i not in y f=1 check(tmp,bzda[n]) sum/n,2
【详解】本题考查程序分析。
(1)若标准答案为["A","C","A","D","B","ACD","ABD","AC"],当输入的答案是"A,C,A,B,C,ACD,ABC,A,"时,判断出单选题对3道,得6分。多选题全对1道,得2分。漏选1道,得1分。故正确答案为:9。
(2)①if条件判断输入的选择题是否在标准答案中,如果不在标准答案中,则答案长度变量t为0,如果在答案长度变量t加1。故正确答案为:i not in y。②当答案长度变量t和标准答案长度相等时,则表示全对,得2分。否则漏选答案得1分。故正确答案为:f=1。③调用答案核对函数,获得每道题的得分,然后累加到总分变量sum中。故正确答案为:check(tmp,bzda[n])。④调用round函数,保留平均分两位小数。平均分计算为总分除以题目数量。故正确答案为:sum/n,2。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$