内容正文:
3.3 简单算法及其程序实现
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.小明要编写一个程序,能实现对用户输入的数据,判断其为奇数还是偶数,请你帮他完成以下代码:在“if( )”处补充代码( )
n=int(input("请输入一个数: "))
if( ):
print("这是一个偶数")else:
print("这是一个奇数")
A.n/2==0 B.n//2==0 C.n%2==0 D.n%10==0
2.有如下 Python 程序段:
a=[2,2,6,1,8,5,3,6,4,3,6,4,9,5,3]
dic={}
for i in a:
if i not in dic:
dic[i]=0
else:
dic[i]+=1
执行该程序段后,dic[3]的值为( )
A.1 B.2 C.3 D.4
3.下面Python程序运行后,变量m,n的值分别是( )
n,m=7,4
if n>m:
n=m
m=n
A.4,4 B.7,7 C.7,4 D.4,7
4.有如下程序段
mw = input('请输入:')
res=''
i=0; j=0; n=len(mw)
while j<n:
if i%2==0:
mw+=mw[i]
else:
res+=mw[i]
j+=1
i+=1
print(res)
若输入的内容为python,输出的结果为( )
A.pto B.yhn C.ptoynh D.yhntpo
5.某算法的流程图如图所示,若输入的n值为10987654321,则下列说法正确的是( )
A.该算法中包含两个循环结构 B.执行该流程后,输出的s值为30
C.语句“n>0?”与“r%2=0?”执行的次数相同 D.执行该流程后,变量r的值为1
6.运行Python程序的过程中出现了如下图错误提示,原因是()。
A.变量名51study太长
B.应该写成"chinese" =51study
C.“chinese”应该写成“chinaˈs”
D.变量名51study不符合python语言规范,变量名不能以数字开头
7.有如下 Python 程序段:
from random import random
i=0
a=[0]*6
while i<=5:
a[i]=(int(random()*6+5))*(i%2+1)
for j in range(i):
if a[j]==a[i]:
i=i-l
break
i=i+1
程序执行后,数组a各元素的数据可能是( )
A.[5,16,12,18,9,10] B.[7,18,10,10,6,12]
C.[8,15,6,16,7,12] D.[6,12,5,18,8,10]
8.已知如下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)
9.有如下 python程序:
md=[["男",1],["女",2],["男",3],["女",4],["女",5],["男",-1]]
xb=["男","女"]
f=1
head=0
r=head
while md[r][1]!=-1:
p=r
q=md[p][1]
while md[q][0]!=xb[f] and q!=-1:
p=q
q=md[q][1]
if q==-1:
break
md[p][1]=md[q][1]
md[q][1]=md[r][1]
md[r][1]=q
r=q
f=1-f
p=head
while md[p][1]!=-1:
print(md[p][0], end="→")
p=md[p][1]
print(md[p][0])
其运行结果为( )
A.男→男→男→女→女→女 B.女→女→女→男→男→男 C.女→男→女→男→女→男 D.男→女→男→女→男→女
10.编程输出1到100之间所有的偶数,下列算法最合适的是( )
A.穷举法 B.冒泡排序法 C.二分查找法 D.插入排序法
11.有如下Python程序段
head=4
item=[[5,2],[7,3],[9,5],[2,-1],[1,0],[3,1]]
p=head
str1=''
while p!=-1:
str1+=str(item[p][0])+"->"
p=item[p][1]
print(str1[:-2])
运行上述程序,结果为( )
A.1->5->9->3->7->2 B.1->5->9->3->7->2->
C.1->5->9->3->7 D.1->5->9->3->7->
12.在Python中,以下哪个选项能正确实现查找一个列表中是否存在某个特定元素8,并输出其索引
lst = [3,4,8,1]
target = 8
for i in ① :
if ② :
print(i)
A.①range(len(lst)) ②lst[i] == target B.①lst ②lst[i] == target
C.①lst ②i == target D.①range(len(lst)) ②i == target
13.有如下Python程序段:
def js(s):
c=0
for i in range(len(s)):
if"0"<=s[i]<="9"
c+=1
return c
s=input()
c=js(s) #调用函数
if c==len(s):
print("yes")
else:
print("no")
执行该程序段后,输出结果为“yes”,则变量s的值是( )
A.2024xxjs B.Actionism C.20240623 D.SHA-1
14.有Python程序段如下:
s="I2024!";s1=""
for i in range(len(s)):
c=s[i]
if "A"<=c<="Z":
c=chr(ord(c)-ord("A")+ord("a"))
elif "a"<=c<"2":
c=chr(ord(c)-ord("a")+ord("A"))
sl=c+sl
print(sl)
程序运行后,输出的值是( )
A.!4202Ti B.It2024! C.iT2024! D.4202Ti
15.以下哪个Python代码片段实现了一个简单的条件分支结构( )
A.if x > 10: print("x is big") B.for i in range(10): print(i)
C.while x < 10: print(x) D.print("Hello World")
16.用Python程序处理字符串,程序如下:
s="b2-c1-2"
t=0;sum=0
for ch in s:
if "0"<=ch<="9":
t=t*10+int(ch)
elif "a"<=ch<="z":
t=ord(ch)-ord("a")#函数ord计算字符的ASCII值
else:
sum+=t
t=0
执行该程序段后,sum的值是( )
A.12 B.35 C.33 D.21
17.某算法的部分流程图如图所示。执行这部分流程,若输入x的值为21,则输出s和k的值分别为( )
A.4,7 B.-5,11 C.4,9 D.-5,9
18.在Python中,以下代码执行后输出的结果是( )
x=1
for i in range(5):
x=x*i
print(x)
A.0 B.15 C.24 D.120
19.数组元素a[0]至a[n-1]依次存放着n个不重复的正整数。现要在数组a中按顺序找出一组升序子序列,可以是不连续,但要求长度最长(若有多个长度相等的最长子序列时,输出第一个)。
例如:数组a的值为[2,11,4,13,5,17],其中最长的升序子序列是[2,11,13,17]。实现该功能的程序段如下。
a=[2,11,4,13,5,7]
n=len(a);ans=[]
d=[[1,-1]for i in range(n)]
#d[i]包含2个数据项,d[i][0]记录i位置结尾的最长升序子序列的长度
#d[i][1]记录i结尾的最长升序子序列前一数据的索引位置
for i in range(1,n):
for j in range(i):
if a[j]< a[i]and :
d[i][1]=j
maxlen=0;k=-1
for i in range(n):
if d[i][0]>maxlen:
maxlen=d[i][0]
k=i
while k!=-1:
ans.append(a[k])
k=d[k][1]
print(ans[::-1])
①d[i][0]<d[j][0] ②d[j][0]>=d[i][0] ③d[i][0]=d[i][0]+1 ④d[i][0]=d[j][0]+1
划线处应填的合适代码依次为( )
A.①③ B.①④ C.②③ D.②④
20.非数值计算主要涉及以下哪类问题?( )
A.数学公式计算 B.统计数据分析 C.逻辑推理问题 D.图形图像处理
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Python分支结构。在这段程序中,我们需要判断输入的正整数x是否为偶数。根据整数的奇偶性质,一个整数除以2的余数为0时,它就是偶数。因此,我们可以使用取余运算符(%)来判断x是否能被2整除,如果余数为0,则x是偶数,否则是奇数。C选项正确。
2.B
【详解】本题考查的是Python字典及循环语句。阅读程序可知,依次读取列表a中的值,如果读取的值是第一次出现,则创建以该值为键,值为0的字典,否则以该值为键的值加1。3在列表中出现3次,第一次出现字典中值为0,执行两次加1,故最后值为2。选B。
3.A
【详解】本题考查的是Python选择语句。初始n=7,m=4。n>m成立,执行n=m=4,m=n=4。故选A。
4.D
【详解】本题考查的是Python循环与分支语句。阅读程序可知,如果索引为偶数,则将该索引对应的字符加入mw,否则将该索引对应的字符拼接在res后面,直到拼接的字符res与原字符长度一样。若输入的内容为python,将索引为偶数,扩展到原字符中:pythonptopoo,将奇数索引字符取出:yhntpo。故选D。
5.D
【详解】本题考查的是流程图识读。该算法中包含一个循环结构;该算法的功能是将输入的n值中,数位上为偶数累加到s中,n值为10987654321,s=2+4+6+8+0=20;语句“n>0?”比“r%2=0?”执行多执行1次;r表示是n值中个位、十位……的数字,故执行该流程后,变量r的值为1。本题应选D。
6.D
【详解】本题考查的是程序调试。报错内容是“语法错误:无效语法”,变量名51study,数字不能作为变量名的开头,故D项正确。
7.D
【详解】本题考查的是循环嵌套语句及随机函数。由a[i]=(int(random()*6+5))*(i%2+1)可知列表a的取值范围,索引号为偶数其值为:[5,11),索引号为奇数其值为:[10,22)的偶整数,选项A中,a[2]=12超出11,不可能;由for语句可知,列表a中的元素不重复,选项B,有重复元素10,不可能;选项C中,a[1]=15不是偶数,不可能,故本题应选D。
8.C
【详解】本题考查程序分析。程序为递归算法。故可知f(5,6)=0,f(5,7)=0,f(-5,6)=151200,f(-5,7)=-1663200。故选择C选项。
9.D
【详解】本题考查Python程序分析能力。使用while循环遍历列表md,直到找到一个元素的第二个值为-1(表示链表的结束)。在循环内部,首先将当前索引r赋值给p,然后获取p指向的元素的第二个值,即下一个相同性别元素的索引,赋值给q。使用while循环寻找下一个相同性别的元素,或者直到链表结束。如果找到的q为-1,表示没有找到下一个相同性别的元素,跳出循环。如果找到了下一个相同性别的元素,就更新链表的链接,使得p指向的元素的第二个值更新为q指向的元素的第二个值,q指向的元素的第二个值更新为r指向的元素的第二个值,r指向的元素的第二个值更新为q。更新r为q,即移动到下一个元素。切换性别标志f,以便在下一次循环中寻找另一种性别的元素。这段代码通过改变列表md中元素的第二个值(即链接)来实现交替排序。每次循环都会将当前性别的元素与下一个相同性别的元素进行交换,并更新链表的链接,从而实现性别的交替排列,故本题选项D为正确选项。
10.A
【详解】本题考查算法相关内容。穷举法是指在算法中采用搜索的方法,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的结果,保留那些符合要求的结果。冒泡算法是通过对待排序的序列从前向后依次比较相邻元素的值,如果发现逆序则交换。二分查找法是一种在有序数组中查找某一特定元素的搜索算法。插入排序法的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。分析题意,穷举法可以解决该问题。故本题答案是A选项。
11.A
【详解】本题考查程序分析。这段代码的功能是根据给定的索引链表item和起始索引head,沿着索引链表依次输出对应的数字,直到遇到索引值为-1为止。最后,我们打印输出了str1[:-2],这里使用[:-2]是为了去掉最后的"->”。故正确答案为选项A。
12.A
【详解】本题考查程序分析。B选项,直接遍历列表lst,变量i直接存储的是列表元素,非索引。C选项,变量i存储的是列表元素值,非索引。D选项,if条件判断错误,不能用索引等于目标值。故正确答案为A选项。
13.C
【详解】本题考查的是自定义函数。自定义函数js是统计字符串s中的数字个数,如果数字个数与字符串的长度相等(即全为数字),则输出“yes”,结合选项可知,只有C选项符合。故选C。
14.A
【详解】本题考查字符串处理及选择语句应用知识。由代码可知,将大写字母转化为相应的小写字母,而将小写字母转换为相应的大写字母,然后按照逆序进行连接。故可以排除C、D。由于最后的字符“!”未经if语句处理,但该字符也会被逆序连接到sl中。故选A。
15.A
【详解】本题考查分支结构。条件分支结构是根据给定的条件来决定执行不同的代码块。选项A中的if x > 10: print("x is big")是一个典型的条件分支结构,它根据变量x与10的大小比较来决定是否执行print("x is big")这部分代码。选项B中的for i in range(10): print(i)是一个循环结构,用于按特定范围重复执行代码。选项C中的while x < 10: print(x)是一个while循环结构,根据条件决定是否循环执行代码。选项D中的print("Hello World")只是简单的输出语句,没有涉及条件判断。故答案为:A。
16.C
【详解】本题考查字符串的应用,根据代码,运行如下表,最后各部分逆序连接。
分组字符
t
sum
“b2”
12
12
“cl”
21
33
“2”
2
不参加运算
故选择C。
17.B
【详解】本题考查流程图分析。
根据题意执行过程如下表所示,则输出s和k的值分别为-5,11。
项目
x
s
k
初值
21
0
1
1
10
-1
3
2
5
2
5
3
2
-3
7
4
1
4
9
5
0
-5
11
故选择B。
18.A
【详解】本题考查的是Python循环语句。range(5)生成0,1,2,3,4序列数, x=x*i将i累乘到x中,即x=1*0*1*2*3*4=0,故选A。
19.D
【详解】本题考查程序分析。if语句判断条件不完整,根据题意该语句要判断当i的前面位置序列长度大于等于i位置上的长度,则i位置上的序列更新为前面位置序列长度加1。故符合条件的选项为D。
20.C
【详解】本题考查算法的描述。非数值计算主要涉及的是逻辑推理问题。数学公式计算和统计数据分析都属于数值计算的范畴,而图形图像处理则属于图像处理领域。因此,逻辑推理问题是非数值计算的主要内容。故选C。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$