内容正文:
第四章 程序设计基础
一、选择题
1.有如下Python程序段:
from random import randint
a=[0]*6
i=0
while i<6:
b=randint(1,20)
if i%2==0 and b%2==0:
a[i]=b
i=i+1
elif i%2==1:
a[i]=b
i=i+1
print(a)
执行程序段后,显示的内容不可能是( )
A.[4,3,6,19,16,16] B.[20,20,20,20,20,20]
C.[4,8,11,14,8,9] D.[12,2,20,19,16,1]
2.有下列程序段:
s=″accdbbdca″
res=″ ″
for i in s:
if len(res)==0 or i!=res[-1]:
res+=i
elif i==res[-1]:
res=res[-1]+res[:len(res)-1]
print(res)
该程序执行结束后,输出结果正确的是( )
A.aca B.acdb C.dbcaca D.bcacdbdca
3.有如下 Python程序段:
a="1357"
list1=["car", "bus","bike"]
list1 [1]=a[1:3]
print (list1)
该程序段运行后的结果是( )
A.['car','bus','bike'] B.['car','35','bike'] C.['car',35,'bike'] D.['car','3','5','bike']
4.将字符串s(仅包含小写字母)依据规则划分为几个子串。划分规则为同一个字母只出现在同一个子串中,且划分的子串尽可能的多。例如字符串为“arrayiybikk”,按照规则最多可以划分为“arra”、“yiybi”、“kk”3个子串。实现上述功能的程序段如下:
p={};s=input("")
for i in range(len(s)):
p[s[i]]=i
i=0
while i<len(s):
n=p[s[i]]
(1)
while j<=n:
if p[s[j]]>n:
n=p[s[j]]
(2)
print(s[i:j])
(3)
上述程序段中方框处可选代码为:①i=j、②i=i+1、③j=i-1、④j=i+1、⑤j=j+1
则(1)、(2)、(3)处代码依次为( )
A.④⑤① B.③⑤① C.④⑤② D.③⑤②
5.已知字典 d={"名称":"ORANGE JUICE","数量":61,"售价":6.7},则下列 Python 表达式中结果最大的是( )
A.4**len(d) B.d["数量"]
C.ord(d["名称"][2]) D.int(d["售价"])*10
6.有如下Python程序段:
n=4
a=[[i*n+j+1 for j in range(n)] for i in range(n)]
for i in range(n//2):
for j in range(1,n,2):
a[i][j],a[n-i-1][n-j-1]=a[n-i-1][n-j-1],a[i][j]
则程序执行后,a[1][1]和 a[2][0]的值分别为( )
A.6和9 B.8和9 C.11和9 D.11和8
7.小明学习了算法后,写了以下两段代码来求斐波那契数列的第6项:
a=1;b=1
for i in range(2,6):
c=a+b
a=b
b=cprint(c)
def f(n):
if n==1 or n==2:
return 1
else:
return f(n-1)+f(n-2)
print(f(6))
算法一
算法二
下列说法正确的是( )
A.两种算法的时间复杂度均为O(1)
B.算法一是迭代算法,算法二是递归算法,相比之下,算法二的时间效率更高
C.执行算法二代码,f(4)共被调用了2次
D.执行算法一代码,当i=4这一遍循环刚结束时,a的值等于5
8.经过中国国家登山队的测量,2020年12月8日,中尼两国共同宣布了珠穆朗玛峰的最新高度为海拔8848.86米。现有一张白纸的厚度大约是0.08毫米,对折一次,厚度变0.16毫米,再对折一次,厚度变为0.32毫米,……,每对折一次,其厚度均变为对折前的两倍,假设这张纸足够大,可以对折任意次,那么这张纸至少对折多少次后,其厚度将超过珠穆朗玛峰的高度?以下是求解以上问题的程序片段,请你补全代码:
请选择适当的代码填入程序①处。( )
A.while B.for C.output D.input
9.在 Python中常用的输入输出语句分别是( )
A.input() output() B.input() print()
C.input() printf() D.scandf() printf()
10.有如下VB 程序段: ( )
a(1) = 8: a(2) = 7: a(3) = 1: a(4) = 6 a(5) = 9: a(6) = 5: a(7) = 4: a(8) = 7
m = Int(Rnd * 4) * 2 + 1
For i = 1 To m - 1
k = i
For j = i + 1 To m
If a(j) < a(k) Then k = j
Next j
If i <> k Then
t = a(i): a(i) = a(k): a(k) = t
End If Next i
执行该程序段后,数组a各元素的值不可能是( )
A.8 7 1 6 9 5 4 7 B.1 7 8 6 9 5 4 7
C.1 4 5 6 7 8 9 7 D.1 4 5 6 7 7 8 9
11.有以下Python代码:
a=input(“请输入a的值:”)
print(a*3)
假如从键盘输入5,则运行结果为( )
A.555 B.15 C.15.0 D.aaa
12.单向链表data中的节点由[数据区域,指针区域]构成,其中数据有重复,执行以下Python程序,去除链表中的重复数据,代码如下:
原始数据:data=[[3,1], [3, 2], [1,3], [5,4], [1,5], [3, 6], [2,7], [3, 8], [8, 9], [2, -1]]
去重后输出:[3, 2], [1, 3], [5, 6], [2, 8], [8, -1]
head = 0
cur = head
while (1) :
p = cur
q = datat[cur][1]
while q!= -1:
if data[q][0] = data[cur][0]:
(2)
else:
p = q
(3)
cur = data[cur][1]
#输出链表,代码略
请选择合适的代码组合填入划线处
①data[cur][1] != -1 ②cur != -1 ③data[p][1] = data[q][1] ④data[q][l] = data[p] [1] ⑤q = data[q] [1] ⑥p = data[p][1]
A.①③⑤ B.②④⑥ C.①④⑤ D.②③⑥
13.Python 表达式abs(-3)+len("2abc")的值为( )
A.7 B.6 C.5 D.4
14.已知字符串a="python",则a[1]的值为( )
A."p" B."py" C."Py" D."y"
15.某Python代码如下:
mylist =[1, 2, 5, 6]
ans = 0;c = 0
for i in range(1,4):
for x in mylist:
if x % i == 0:
ans += x
c += 1
print(ans,c)
执行后输出的结果是( )
A.28 7 B.33 8 C.14 4 D.25 5
16.在Python中,表达式(21%4)+3的值是( )
A.2 B.4 C.6 D.8
17.在Python中,以下表达式的计算结果不为0的是( )
A.3//5 B.21%7 C.2/4 D.10*0
18.在Python中,下面代码的运行结果是( )
x=365
g=x%10 #%为求余的意思
s=x//10%10 # //为整除的意思
b=x//100
sum=g*100+s*10+b #sum英文是求和的意思
print(sum)
A.365 B.14 C.563 D.41
19.若x是一个整型变量,则判断它是否为5的倍数的Python关系表达式是( )
A.x % 5 == 0 B.x / 5 == 0 C.x \ 5 = =0 D.Int(x / 5) == 0
20.在 Python 语言中,执行“float('1.5')”函数后的结果是( )
A.'1.5' B.1.5 C.1 D.2
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题主要考查Python程序分析。当i为偶数时,随机数b必须是偶数,才执行a[i]=b。观察选项C中,a[2]=11,b为奇数,显然不符合题意,故本题选项C正确。
2.C
【详解】本题考查Python程序设计相关内容。
给定字符串s=″accdbbdca″,我们需要遍历字符串s并对其进行处理。首先,我们初始化一个空字符串res作为结果。在循环遍历字符串s的过程中,我们逐个检查每个字符。如果当前字符不在结果字符串res中,我们将其添加到res的末尾。这意味着我们只保留字符串s中的第一个出现的字符。根据这个逻辑,我们依次处理字符串s中的字符:
当处理字符'a'时,由于'a'不在res中,将其添加到res的末尾,此时res=″a″;
当处理字符'c'时,由于'c'不在res中,将其添加到res的末尾,此时res=″ac″;
当处理字符'c'时,由于'c'==res[-1],执行res=res[-1]+res[:len(res)-1],此时res=″ca″;
当处理字符'd'时,由于'd'不在res中,将其添加到res的末尾,此时res=″cad″;
当处理字符'b'时,由于'b'不在res中,将其添加到res的末尾,此时res=″cadb″;
当处理字符'b'时,由于'b'==res[-1],执行res=res[-1]+res[:len(res)-1],此时res=″bcad″;
当处理字符'd'时,由于'd'==res[-1],执行res=res[-1]+res[:len(res)-1],此时res=″dbca″;
当处理字符'c'时,将其添加到res中,此时res=″dbcac″;
当处理字符'a'时,将其添加到res中,此时res=″dbcaca″。
根据题目中给定的程序段逻辑,字符串res最终的结果应该是″dbcaca″。
故本题答案是C选项。
3.B
【详解】本题考查Python列表操作。a="1357",list1=["car", "bus","bike"],列表索引从0开始,执行list1 [1]=a[1:3]后,list1=['car','35','bike'],故选B。
4.A
【详解】本题主要考查Python程序的执行与调试。for循环中, p[s[i]]=i用于记录字符串s中相同字母最后一次出现的位置,第一空设置j的初值,n=p[s[i]],n保存s[i]最后一次出现的位置,而嵌套while中依次比较p[s[j]]>n,因此j的初值为i+1,即第一空填j=i+1。第二空循环变量j递增1,继续循环,因此填j=j+1。内层循环结束后,需要更新i的值为j继续下一个字串的划分,第三空填i=j,故本题选A选项。
5.C
【详解】本题主要考查Python表达式的运算。已知字典 d={"名称":"ORANGE JUICE","数量":61,"售价":6.7},4**len(d)=4**3=64;d["数量"]=61;ord(d["名称"][2])=65;int(d["售价"])*10=60,故本题选C选项。
6.D
【详解】本题考查Python程序设计相关内容。
创建第二行语句,创建一个4*4的二维数组。a=[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
在双重循环中,i=0,j=1时,执行:a[0][1],a[3][2]=a[3][2],a[0][1];i=0,j=3时,执行:a[0][3],a[3][0]=a[3][0],a[0][3];i=1,j=1时,执行:a[1][1],a[2][2]=a[2][2],a[1][1];i=1,j=3时,执行:a[1][3],a[2][0]=a[2][0],a[1][3]。
程序执行后,a[1][1]和a[2][0]的值分别为11和8。故本题答案是D选项。
7.C
【详解】本题主要考查算法的应用。两种算法的时间复杂度均不为O(1);算法一是迭代算法,算法二是递归算法,相比之下,算法一的时间效率更高;执行算法二代码,f(4)共被调用了2次;执行算法一代码,当i=4这一遍循环刚结束时,a的值等于3,b的值等于5,故本题选C选项。
8.A
【详解】本题考查的是Python的while循环。while语句格式:
当表达式的值为真时,执行循环体语句;当表达式值为假时,退出循环,执行循环体外的下一条语句(即while后面没有缩进的第一条语句)。当高度h小于珠穆朗玛峰的高度height,则继续对折,故本题应选A。
9.B
【详解】本题考查的知识点是python的函数。Python中常用的输入输出语句分别是input() print(),故选项B正确。
10.D
【详解】本题主要考查VB程序的排序算法。m = Int(Rnd * 4) * 2 + 1,m是随机生成[1,7]之间的整数,m的最大值为7,当m=7时,即内层循环j的范围从i+1到7,数组a中最后一位不参与排序,即a(8)一直为7,故数组a各元素的值不可能是1 4 5 6 7 7 8 9,故本题选D选项。
11.A
【详解】本题主要考查Python程序执行。input接收的数据类型是字符串型,即a="5",则a*3="555",故本题选A选项。
12.A
【详解】本题考查Python程序。外层循环需要判断当前节点是否为最后一个节点,即条件为data[cur][1]!=-1,所以第一空选①;当发现重复数据时,要将当前节点的下一个指针指向重复节点的下一个节点,即data[p][1]=data[q][1],第二空选③;内层循环中要不断移动到下一个节点进行判断,即q=data[q][1],第三空选⑤。故答案为:A。
13.A
【详解】本题主要考查Python表达式的运算。abs求绝对值函数,len是返回字符串长度,故abs(-3)+len("2abc")=3+4=7,选A。
14.D
【详解】本题主要考查Python字符串。字符串索引从0开始,a[0]="p",a[1]="y",故本题选D选项。
15.A
【详解】本题主要考查Python嵌套循环。变量i的范围是1、2、3,变量x是列表mylist中的元素,当x能整除i时,则将x累加到变量x中,同时变量c递增,满足的情况有:当i=1时,x=1、2、5、6;当i=2时,x=2、6;当i=3时,x=6,故ans=1+2+5+6+2+6+6=28,c=4+2+1=7,故本题选A选项。
16.B
【详解】本题考查的是Python表达式。%是求余,故(21%4)+3=1+3=4,选项B正确。
17.C
【详解】本题考查Python运算符与表达式相关内容。A选项,3//5-->0。B选项,21%7-->0。C选项,2/4-->0.5。D选项,10*0-->0。故本题答案是C选项。
18.C
【详解】本题主要考查Python基本运算。%为求余, //为整除,程序实现了提取了变量x各位上的数值,然后倒置形成新数,因此C选项正确。
【点睛】
19.A
【详解】本题考查的是Python表达式。判断它是否为5的倍数,即x是否能被5整除,即x除以5的余数为0,%是取余运算符,故判断变量x是否能被5整除的Python语言表达式为:x%5==0。故选A。
20.B
【详解】本题主要考查Python函数的应用。 float() 函数用于将整数和字符串转换成浮点数。 执行“float('1.5')”函数后的结果是1.5,故本题选B选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$