内容正文:
3.3 简单算法及其程序实现
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.在Python中,下列程序段执行后,输出的结果是( )
s=1
n=4
for i in range(1,n):
s=s*i
print(s)
A.2 B.4 C.6 D.8
2.在非数值计算中,贪心算法通常用于求解( )
A.最小化问题 B.最大化问题 C.确定性问题 D.非确定性问题
3.如下图所示的流程图:
算法执行时,若输入n的值为3,则输出s的值是( )
A.6 B.8 C.9 D.15
4.用火柴棍拼数字,各数字的拼法如下图所示,10根火柴棍(可以剩余)能拼成的最大两位数是( )
A.87 B.94 C.97 D.98
5.下列程序运行后,在键盘输入100,则程序的运行结果是( )。
x=int(input("Please input x:"))
if x<0 or x>=20:
print(x//10)
elif 0<=x<5:
print(x)
elif 5<=x<10:
print(3*x-5)
elif 10<=x<20:
print(0.5*x-2)
A.10 B.100 C.295 D.48
6.有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
7.某算法流程图如图所示。执行该流程图时,依次输入5、4、6、-8、4、0,下列说法正确的是( )
A.a!=0?执行了4次
B.s=s*x+a执行了5次
C.输出的s值是表达式4*54+6*53-8*52+4*5的值
D.输出的s值是表达式4*53+6*52-8*5+4的值
8.如图所示的python程序代码运行后,输出结果是( )
A.0 B.5 C.10 D.15
9.阅读下列Python访问mdb数据库语句,下列说法错误的是( )
import win32com.client
conn = win32com.client.Dispatch(r"ADODB.Connection")
DSN = 'PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = 旅行小助手.mdb'
conn.Open(DSN)
rs = win32com.client.Dispatch(r'ADODB.Recordset')
tablename = '旅行线路表'
rs.Open('[' + tablename + ']', conn, 1, 3)
while not rs.EOF:
for i in range(rs.Fields.Count):
print(rs.Fields[i].Name, ":", rs.Fields[i].Value)
print(end='
')
rs.MoveNext()
print('该表有'+str(rs.Fields.Count)+'个字段')
print('该表有'+str(rs.RecordCount)+'条记录')
conn.Close()
A.conn.Open(DSN)用于连接数据文件“旅行小助手.mdb”,rs.Open('[' + tablename + ']', conn, 1, 3)语句用于打开数据文件中的表“旅行线路表”
B.for i in range(rs.Fields.Count)用于循环访问打开表中一条记录中的所有字段,print(rs.Fields[i].Name, ":", rs.Fields[i].Value) 用于打印字段名称,字段的数据
C.conn.Close()用于关闭访问,这个语句可以不需要
D.rs.MoveNext()用于移动到下一条记录
10.在Python中,运行以下代码后,变量i的值是( )
i=6
while i>=1:
print(i)
i=i-1
A.1 B.0 C.6 D.5
11.某产品质量检测综合指标x,当0≤x<6为不合格,6≤x<8为合格,8≤x≤10为优秀。设计Python程序段,输入x(O≤x≤10),输出质检等级,则能实现该功能的是( )
A.
x =int (input ())
s=" "
if 0<=x:
s= "不及格"
elif 6<=x:
s ="及格"
else:
s="优秀"
print (s)
B.
x =int (input ())
s=" "
if 8<=x:
s= "优秀"
elif 6<=x:
s="及格"
else:
s ="不及格"
print (s)
C.
x=int (input ())
s=" "
if 0<=x:
s="不及格"
if 6<=x:
s ="及格"
else:
s = "优秀"
print (s)
D.
x=int (input ())
s =" "
if 8<=x:
s= "优秀"
if 6<=x:
s ="及格"
if 0<=x:
s = "不及格"
print (s)
A.A B.B C.C D.D
12.智能停车场收费系统,远距离红外读卡器的有效读卡距离设置为10~20米,时速40公里及以下的车辆可以不停车读卡,用逻辑型变量x标记是否读卡成功,用dis表示车辆距离读卡器的距离,用v表示此时车辆的车速,则下列分支语句不正确的是( )
A.
if v>40 and dis<10 or dis>20:
x=True
else:
x=False
B.
x=False
if 10<=dis<=20 and v<=40:
x=True
C.
if dis<10 or dis>20:
x=False
elif v<=40:
x=True
else:
x=False
D.
if 10<=dis<=20:
if v<=40:
x=True
else:
x=False
else:
x=False
A.A B.B C.C D.D
13.在Python中,已知A=8,则以下代码执行后输出的结果是( )
if A<=5:
print(A-5)
else:
print(A+10)
A.3 B.5 C.10 D.18
14.有如下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]
15.用python程序对数组元素进行分组,程序运行后b[2]的值为( )
a=[6,4,2,8,5,3,9,17];b=[]
for i in range(len(a)):
f=False
for j in range(len(b)):
if a[i]>b[j][-1]:#列表b是一个二维数组
b[j].append(a[i])#append函数在列表末尾添加一个元素
f=True
break #跳出本层循环
if f==False:
b.append([a[i]])#新元素为一维数组
A.[2,3] B.[4,5] C.[6,8,9,17] D.[2,5,9]
16.在信息传递的过程中,通常会将一些敏感信息进行加密,以下是实现加密功能的Python程序段。
mw=input("请输入明文:")
mm="";key=2
for ch in mw:
if"0"<=ch<="9";
mm=str((int(ch)+key)%10)+mm
else:
mm+=chi
print(mm)
若输入的明文为“Hi,2024”,则执行代码后的输出结果为( )
A.,6424iH B.6424Hi C.6424Hi, D.Hi,6424
17.有如下Python程序段:
sl=''1324'';s2="abcdefgh''
j,m=0,0
c=""
for i in s2:
k=int(s1[j])
c+=s2[m+k]
j+=1
ifj>3:
j=1
m=m+2
print(c)
运行程序,输出结果是( )
A.acbdefeg B.bdcefegh C.bcdefegh D.bdceefgh
18.应用分治法的两个前提是( )
A.问题的可分性和解的可归并性 B.问题的可分性和解的复杂性
C.问题的可分性和解的存在性 D.问题的复杂性和解的可归并性
19.函数range(6,10)生成的序列中元素的个数是( )
A.3 B.4 C.5 D.6
20.有如下visual basic程序:
private Sub command1_Click()
s=0
If s<=99 then
For j=1to 10
s=s+j
Next j
Else
print “程序出错!”
Endif
print “最后的s的值是:”;s
End Sub
关于该程序的控制结构的说法不正确的是( )
A.顺序结构包含了选择和循环结构
B.选择结构是由块条件语句构成
C.选择结构包含了循环结构
D.循环结构包含了选择结构
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查的是Python循环。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop:计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。故程序输出的结果是:s=1*1*2*3=6。选项C正确。
2.AB
【详解】本题考查贪心算法的描述。贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望能够导致全局最优解的算法。它通常用于求解最优化问题,包括最小化问题和最大化问题。因此,选项A和B都是正确的。
3.C
【详解】本题考查流程图分析。
由下表可知,循环结束后,s的值为9。
m<n(n的值为3)?
s=0
m=0
是
1
1
是
4
2
是
9
3
否
—
—
故选择C。
4.C
【详解】本题考查算法相关内容。由图可知,要想两位数最大,首先十位上要尽可能大,选9,用去6根火柴棍,剩下4根,个位可以选7,最大是97。故本题答案是C选项。
5.A
【详解】本题主要考查多分支条件结构。因为x=100大于20,所以执行x//10=100//10=10,故程序的运行结果是10,故本题选A选项。
6.A
【详解】本题考查字符串处理及选择语句应用知识。由代码可知,将大写字母转化为相应的小写字母,而将小写字母转换为相应的大写字母,然后按照逆序进行连接。故可以排除C、D。由于最后的字符“!”未经if语句处理,但该字符也会被逆序连接到sl中。故选A。
7.D
【详解】本题考查流程图分析。
执行过程如下表所示。
a!=0?
s
a
x
初值
0
4
5
是
4
6
5
是
4*5+6
-8
5
是
(4*5+6)*5-8
4
5
是
((4*5+6)*5-8)*5+4
0
5
否
—
—
—
故选择D。
8.C
【详解】本题考查的是Python选择语句。该程序的功能是输出a、b中的最大值,a=5,b=10,故输出10,选C。
9.C
【详解】本题考查数据库操作。数据库访问结束后,一定要调用close方法关闭连接,否则会占用系统资源,不利于数据库的安全。C选项,conn.Close()用于关闭访问,这个语句可以不需要,说法错误。其他选项说法正确,故正确答案为选项C。
10.B
【详解】本题主要考查Python循环语句。变量i的初值是6,循环条件是i>=1,每次i递减1,当i=0时,循环结束,故本题选B选项。
11.B
【详解】本题考查分支结构。A选项错误,0<=x这个条件始终为真,所以s总是被设置为"不及格",不会执行后面的elif和else。C选项错误,当x在[8,10]之间,if 0<=x仍然会执行,s被先设置为"不及格",然后设置为"及格",这与题目不符合。D选项错误,所有if条件都是独立判断的,最后s都会被if 0<=x覆盖为"不及格"。故答案为:B。
12.A
【详解】本题考查分支语句。A选项中,当v>40且dis<10或dis>20时,x被设置为True,这与题目要求不符,应该是当车速v≤40且读卡距离在10到20米之间时读卡成功,即x=True,所以A选项不正确。故答案为:A。
13.D
【详解】本题考查的是Python选择语句。A=8,不满足A<=5,执行 print(A+10),输出8+10=18,故选D。
14.C
【详解】本题主要考查Python程序分析。当i为偶数时,随机数b必须是偶数,才执行a[i]=b。观察选项C中,a[2]=11,b为奇数,显然不符合题意,故本题选项C正确。
15.A
【详解】本题考查数组的应用,b最终为二维数组,每个元素即为一个严格递增(可以不连续)的集合,最终结果,b[0]=[6,8,9,17],b[1]=[4,5],b[2]=[2,3]。故选择A。
16.C
【详解】本题考查程序分析。语句(int(ch)+key)%10的功能是把数字ch循环右移2位,即如果ch=0,循环右移2位结果是2,若ch=4,右移结果是6,若ch=2,右移结果是4。mm=str((int(ch)+key)%10)+mm的功能是把右移2位的结果逆序保存到mm中,如果ch不是数字,则按照顺序保存到mm中。故选C。
17.B
【详解】本题考查程序分析。程序代码运行过程:
k=1 j=1 m=0 c=b
k=3 j=2 m=0 c=bd
k=2 j=3 m=0 c=bdc
k=4 j=1 m=2 c=bdce
k=3 j=2 m=2 c=bdcef
k=2 j=3 m=2 c=bdcefe
k=4 j=1 m=4 c=bdcefeg
k=3 j=2 m=4 c=bdcefegh
故程序运行的最后变量c的结果为bdcefegh,故正确答案为选项B。
18.A
【详解】本题考查用分治法。分治法是把复杂的问题分解成相同或相似的子问题(分解),找到子问题的解法后(解决),还能利用该问题分解出的子问题的解合并为该问题的解(合并)。故正确答案为:选项A。
19.B
【详解】本题考查Python函数的应用。range(start, stop,[step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0,5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0,1,2,3,4]没有5;step:步长,默认为1。range(6,10)生成:6、7、8、9共4个。故选B。
20.D
【详解】本题考查控制结构。该程序中的循环结构(For...Next)并没有包含选择结构。故答案为:D。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$