内容正文:
第三章 算法的程序实现
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.下列属于程序设计语言的是( )。
A.ACDSee B.VisualBasic C.WinRAR D.Premiere
2.运行以下程序,变量b的值是( )
a=8
b=a//3+5
A.8 B.7 C.10 D.5
3.如下Python程序段:
x = int(input("输入x的值:"))
if x > 3 :
if x <= 6 :
y = 2 * x
else:
y = 3 * x
else:
y = 4 * x
print( y)
程序运行并输入6,则y的值是( )
A.24 B.18 C.12 D.6
4. BF语言是一种基于一种简单的计算模型的最小化编程语言,这个机器包括八种指令,一个以字节(0-255)为单位、初始全部为零的数组,一个初始时指向该数组中第一个字节的指针,以及用于输入输出的两个字节流。八种指令用字符表示如图所示:
字符
含义
>
指针加一
<
指针减一
+
指针所指字节的值加一
-
指针所指字节的值减一
.
输出指针所指字节内容(ASCII 码)
,
向指针所指的字节输入内容(ASCII 码)
[
若指针所指字节的值为零,则向后跳转,跳转到其对应的]的下一个指令处
]
若指针所指字节的值不为零,则向前跳转,跳转到其对应的[的下一个指令处
和 BF 语言最接近的计算模型是( )
A.图灵机 B.原始递归函数 C.Lambda 演算 D.组合子逻辑
5.在列表listaue中添加订单号”y5617”,正确的是()
A.listaue[]=“y5617” B.append(“y5617”)
C.listaue[“y5617”] D.listque.append(“y5617”)
6.有如下Python程序段
from random import randint
x=randint(2,4)*2
a=[9,2,5,1,3,4,8,7]
n=len(a)
for i in range(0,n-1):
k=i
for j in range(i+1,x):
if a[k]>a[j]:
k=j
if i!=k:
a[k],a[i]=a[i],a[k]
print(a)
执行后,输出结果不可能是( )
A.[1,2,3,4,5,7,8,9] B.[1,2,3,4,5,9,8,7]
C.[1,2,5,9,3,4,8,7] D.[1,2,3,4,5,9,7,8]
7.下列Python程序段功能为:列表a中存放的是无重复的非负整数,找出其中的最大值m1和次大值m2。
m1=m2=0
for i in range(len(a)):
if a[i]>m1:
elif a[i]>m2:
print('最大值为'+str(m1)+'次大值为'+str(m2))
上述程序段中方框处可选语句为:
①m1=a[i] ②m2=a[i] ③m2=m1 ④m1=m2
则(1)(2)(3)处语句依次是( )
A.①④② B.③①② C.②①③ D.③②①
8.有如下 python 程序段:
m=int(input())
def dex_oct(m):
if m>=8:
dex_oct(m//8)
print(m%8,end='')
else:
print(m,end='')
dex_oct(m)
运行该程序时,如果输入 15,则输出的结果是( )
A.81 B.71 C.17 D.18
9.以下Python 代码段运行的结果是( )
s=0
for i in range(100):
s+=i
print(s)
A.0 B.100 C.4950 D.8050
10.以下关于 Python 3.0基础知识的说法,错误的是( )
A.支持中文做标识符 B.Python命令提示符是>>>
C.Python 标识符不区分字母的大小写 D.命令中用到的标点符号只能是英文字符
11.现有一段代码如下,现输入“260”和“-123”,运行后输出结果分别是( )
x=input("请输入数据")
if x[0] =="-":
fz=-int(x[:0:-1])
else:
fz=int(x[: :-1])
print(fz)
A.062 -32 B.062 -321 C.62 -32 D.62 -321
12.有如下Python程序段:
s=input("输入字符串:")
n=len(s)
i=0;j=n-l
ans=" "
while i<n//2 and j>=n//2: -
if s[i]>=s[j]:
ans+=s[i];j-=l
elif s[i]<s[j]:
ans+=s[j];i+=l
print(ans)
执行该程序段,分别输入下列选项中的字符串,输出结果不为“ppp”的是( )
A."python" B."public" C."purple" D."bookshop"
13.在Python编程时,能提高程序的可读性。但不会在程序运行过程中被执行的语句是( )
A.赋值语句 B.注释语句 C.循环语句 D.选择语句
14.Python 表达式 int(3 ** 2 / 4) * 6 % 4 * 2 的值是( )
A.0 B.4 C.6 D.8
15.下列代码中( )生成的函数曲线更光滑。
A.import numpy as np;x=np.arange(0,2*np.pi,0.1);y=sin(x)
B.import numpy as np;x=np.arange(0,2*np.pi,0.01);y=sin(x)
C.import numpy as np;x=np.arange(0,3*np.pi,1);y=sin(x)
D.import numpy as np;x=np.arange(0,np.pi,0.5);y=sin(x)
16.某Python代码如下:
import random
lst =[0]*8 #定义列表lst, lst[0]~Ist[7]初始值均为0
i=0
while i<8 :
if i % 2==0:
lst[i]=int(random.random() *10)
else:
lst[i]=int(random.randint(1,5)) *2 +1
i +=1
print(lst)
执行程序后,列表lst[0] ~ lst[7]各元素值可能的是( )
A.[0, 10, 2, 9, 8, 3 ,4, 5] B.[8, 5, 4, 7, 10, 3, 6, 9]
C.[4, 11, 3, 5, 9, 6, 1, 7] D.[6, 3, 1, 11, 7, 3, 5, 9]
17.下列表达式结果为真(True)的是( )
A.9>2 and 0>5 B.3<5 or 4>5 C.not 16>15 D.20<19 and 87>100
18.语句“m+=n”等价于( )
A.m=m+n B.m=n+n C.n=m+n D.m+n=m
19.关于python语句功能描述正确的( )
A.ord(chr(x)+26) #若字符变量x是大写字母即变成小写字母
B.str(x)+str(y) #求两数之和
C."abcd"[2:4] #运行结果为"bcd"
D.2**3*2/2 % 5 #结果3
20.有如下 Python 程序段:
s=input("请输入字符串:")
a=[""]*10 ; a[0]=s[0] ; t=0
for i in range(1,len(s)):
if t>=0 and s[i]==a[t]:
t=t-1
else:
t=t+1
a[t]=s[i]
运行程序段,输入以下字符串,运行后变量t的值与其它三项不同的是( )
A.++**+ B.+*+** C.*+**+ D.*++*+
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题主要考查程序设计语言。ACDSee是图片编辑与管理软件,VisualBasic是程序设计语言,WinRAR是解压缩软件,Premiere是视频编辑软件,故本题选B选项。
2.B
【详解】本题主要考查Python程序的执行。a=8,b=a//3+5=2+5=7,故程序执行后变量b的值为7,故本题选B选项。
3.C
【详解】本题考查Python程序设计相关内容。分析程序段,x为6时满足if x > 3 条件,接着判断if里面的条件,满足x<=6,因此执行y = 2 * x,即y的值为12。故本题答案是C选项。
4.A
【详解】本题考查计算模型。BF语言是一种极简的编程语言,其计算模型包括一个指针、一个以字节为单位的数组以及八种基本指令。这种模型与图灵机最为接近。图灵机是一种抽象的计算模型,由图灵在上世纪提出,被认为是通用计算模型的基础。图灵机包含一个无限长的纸带,纸带被划分为一个个格子,每个格子上可以写入符号。机器包含一组状态以及一组转移规则,根据当前状态和当前格子上的符号执行相应的转移规则。这与BF语言的模型十分相似,都是基于一种简单的指令集操作一个数据存储器。故答案为:A。
5.D
【详解】本题主要考查Python列表。append() 方法用于在列表末尾添加新的对象,在列表listaue中添加订单号”y5617”,可以使用语句listque.append(“y5617”),故本题选D选项。
6.D
【详解】本题考查Python程序。这是一个简单的选择排序算法实现。选择排序的目的是将数组按升序排列。在这个算法中,你选取列表中的最小元素并将其与第一个元素交换,然后选取第二小的元素并将其与第二个元素交换,以此类推,直到整个列表排好序。现在,让我们逐一分析选项:[1, 2, 3, 4, 5, 7, 8, 9]:这是选择排序的升序排列结果,是可能的输出。[1, 2, 3, 4, 5, 9, 8, 7]:这也是选择排序的一种可能结果,其中有一个逆序对在第6和第7位置(8和7之间)。虽然这不是最常见的排序结果,但仍然是可能的输出。[1, 2, 5, 9, 3, 4, 8, 7]:这是选择排序的一种可能结果,其中在第2和第3位置(2和5之间)有一个逆序对。虽然不太常见,但仍然是可能的输出。[1, 2, 3, 4, 5, 9, 7, 8]:这个选项中,数字7和8的顺序被颠倒了,这不是选择排序的结果。在选择排序中,从左到右,每次都会选择列表中的最小元素,并将其放在正确的位置。因此,选项D不是选择排序的可能输出,因为它没有按照升序排列。故答案为D选项。
7.B
【详解】本题考查Python程序。在给定的Python程序段中,我们需要找出列表a中的最大值m1和次大值m2。正确的操作步骤如下:首先,我们需要初始化m1和m2的值为列表a中的前两个元素。假设a[0]和a[1]是最大的两个元素,那么m1应该等于a[0],m2应该等于a[1]。然后,我们遍历列表a的剩余元素,从索引2开始,依次与m1和m2进行比较。如果当前元素a[i]大于m1,则更新m2为m1,再将m1更新为a[i]。如果当前元素a[i]大于m2但小于m1,则仅更新m2为a[i]。根据上述步骤,正确的语句顺序应该是:(1) 处填写 m2 = m1,因为当a[i]大于m1时,m1应该被更新为a[i]的值,而m2需要成为之前的m1的值,即m2 = m1。(2) 处填写 m1 = a[i],因为当a[i]大于m1时,m1需要被更新为a[i]的值。(3) 处填写 m2 = a[i],因为当a[i]大于m2但小于m1时,m2需要被更新为a[i]的值。故答案为B选项。
8.C
【详解】本题考查Python程序。用户输入数字 m,即输入 15。 程序调用 dex_oct 函数,并将输入的数字传递给该函数。 dex_oct 函数进行八进制转换,通过递归调用自身实现对输入数字 m 的八进制转换。 输出的结果是将每次转换得到的余数逆序输出,即 15 转换为八进制为 17。 故答案为:C。
9.C
【详解】本题主要考查Python循环结构。分析程序可知,该程序实现计算0+1+...+98+99=4950,故本题选C选项。
10.C
【详解】本题考查Python程序设计相关内容。Python3.0版本,常被称为Python 3000,或简称Py3k,相对于Python的早期版本,这是一个较大的升级。Python3.0支持中文做标识符,Python标识符区分字母的大小写,Python命令提示符是>>>,命令中用到的标点符号只能是英文字符。故本题答案是C选项。
11.D
【详解】本题主要考查Python字符串切片操作。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。故当输入260时,执行else部分,输出62,输入-123时执行if部分,输出-321,故本题选D选项。
12.D
【详解】本题主要考查Python程序的执行。分析程序可知,比较字符串s左右两端的字符,其中比较小的一端进行移动并再次比较,将值大的字符拼接到变量ans中,选项D中,字符"b"、"o"、"o"、"k"均小于字符"p",因此输出的结果是"pppp",故本题选D选项。
13.B
【详解】本题主要考查Python程序基本概念。在Python编程时,能提高程序的可读性。但不会在程序运行过程中被执行的语句是注释语句,故本题选B选项。
14.A
【详解】本题主要考查Python表达式。表达式 int(3 ** 2 / 4) * 6 % 4 * 2 =int(9 / 4) * 6 % 4 * 2 =2*6%4*2=12%4*2=0*2=0,故本题选A选项。
15.B
【详解】本题主要考查Python函数。结合选项,选项ABCD点每次分别递增0.1、0.01、1、0.5,故import numpy as np;x=np.arange(0,2*np.pi,0.01);y=sin(x)生成的函数曲线更光滑,故本题选B选项。
16.D
【详解】本题主要考查Python程序的调试与执行。random()方法返回随机生成的一个实数,它在[0,1)范围内。random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。random.random()用于生成一个0到1的随机符点数: 0 <= n 。分析程序可知,能满足i%2==0的数有0、2、4、6,因为索引从0开始,那么在列表中不能满足的则是第二、第四、第六、第八个元素不能够满足,所以执行 lst[i]=int(random.randint(1,5)) *2 +1,故应该为奇数,可排除A、C选项;random.random()生成的是大于等于0但小于1的随机数,所以奇数为0~9的任意整数,可排除选项B,故本题选D选项。
17.B
【详解】本题主要考查Python表达式的运算。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。因此3<5 or 4>5值为True,其他选项值均为False,故本题选B选项。
18.A
【详解】本题考查Python运算符相关内容。在Python中,“+=”是指“加赋值”运算符,是赋值运算符的一种,作用是先进行加法运算,再将结果赋值给运算符左侧的变量;语法为“x += y”,等价形式为“x = x + y”。故本题答案是A选项。
19.D
【详解】本题考查表达式的运算。A选项,会导致类型错误。B选项,字符拼接,非求和。C选项,结果为“cd”。D选项正确,结果为3。故正确答案为选项D。
20.A
【详解】本题主要考查Python程序的执行与调试。分析程序可知,该程序实现的功能是:输入字符串s,相邻的字符相等且t>=0时,执行t=t-1,反正执行t=t+1,同时更新a[t]=s[i]以比较下一组,分析选项可知,选项A执行后t的值是0,其余选项执行后t的值是2,故本题选A选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$