第二单元 编程计算 单元测试(含答案)2022-2023学年教科版(2019)高中信息技术1

资源下载
  1. 二一教育资源

第二单元 编程计算 单元测试(含答案)2022-2023学年教科版(2019)高中信息技术1

资源简介

第二单元 编程计算 单元测试
一、选择题
1.有如下Python程序段:
s="VictoryOnTheWay"#'A'的ASCII值为65,"a"的ASCII码值为97
mx=""
pre=0
for i in range(1,len(s)):
if ord(s[i]) < 97:
if mx mx=s[pre:i]
pre=i
print(mx)
A.Victory B.On C.The D.Way
2.“洗衣机的洗衣流程”情境问题,洗衣机模拟人洗衣的过程,自动执行洗衣程序,节省了大量的人力,这主要归功于由算法控制的机器设备。某儿童牌洗衣机在最后一道漂洗过程中可将水加热至95℃,能够杀灭金黄色葡萄球菌、大肠埃希氏菌等多种附着在衣物上的细菌,除菌率可达99%以上。下列程序中横线处应该填写( )
n = int(input("请输入洗涤的次数:"))
for i in range(n):
print("第",i,"次洗涤:")
if :
print("加热至95℃")
else:
print("正常水温")
A.i < n B.i == n C.i == n+1 D.i == n-1
3.某Python程序如下:
list1=[3,4,8,6,9]
c=0
i=0
while i if list1[i]%3==0:
c+=list1[i]
else:
c-=list1[i]
i+=1
print(c)
程序运行后,输出的结果是( )
A.5 B.6 C.7 D.9
4.已知 18.5<=BMI<=24.9 为正常标准,某同学的BMI值存储在变量BMI中,编写程序判断该同学的身体状况信息,并保存到变量 result 中,则下列程序段无法实现该功能的是( )
A. B. C. D.
5.下列程序段执行后,结果与其他三项不同的是( )
A. B. C. D.
6.已知斐波那契数列前7项值为 1,1,2,3,5,8,13…,计算该数列第n项的Python程序如下:
a=b=1
n=int(input(“请输入项数:”))
for i in range(n-2):
print("第n项为:",b)
加框处可选的语句有:①a=b-a ②b=a ③b=a+b ④a=b
下列选择的语句正确的是( )
A.③① B.②④ C.④② D.①③
7.求列表第 3 项至第 7 项元素的和,划线处正确的Python表达式是()
lis=[6,3,-2,5,19,21,-9,22,14,25]
he=[0]*10
he[0]=lis[0]
for i in range(1,len(lis)):
he[i]= he[i-1]+lis[i]
print( )
A.he[7]-he[3] B.he[6]-he[2] C.he[7]-he[2] D.he[6]-he[1]
8.象限是平面直角坐标系(笛卡尔坐标系)中横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y轴为分界线,原点和坐标轴上的点不属于任何象限。某同学根据输入的坐标点(x,y)来判断该坐标点的位置所在。以下实现该分类的Python程序段中不正确的是( )
A. B. C. D.
9.有如下Python程序段:
from random import randint
s=[″C++″,″Java″,″VB″,″Pascal″,″C″,″Python″]
for i in range(2):
k=randint(0,2)*2
s=s[:k]+s[k+1:]
print(s)
执行该程序段后,变量s的值不可能是( )
A.[″Java″,″VB″,″Pascal″,″C″] B.[″C++″,″Java″,″C″,″Python″]
C.[″C++″,″VB″,″Pascal″,″Python″] D.[″C++″,″Java″,″Pascal″,″Python″]
10.在Python当中运行以下程序时,按提示输入密码为“123456”,则得到的运行结果是( )
psw=input('请输入您的密码:')
if psw=='000000':
print('欢迎您')
A.请输入您的密码 B.000000
C.欢迎您 D.无结果显示
11.执行以下代码,并根据提示输入5,则输出的结果是( )
a=input("请输入你的选择1-3:")
if a=='1':
print("青年组")
elif a=='2':
print("少年组")
elif a=='3':
print("幼儿组")
else:
print("程序已退出")
A.青年组 B.少年组 C.幼儿组 D.程序已退出
12.在Python当中执行以下程序时,用户输入78,则得出的结果是( )
n=int(input("请输入分数:"))
if n>=60:
print("合格")
else:
print("不合格")
A.78 B.60 C.合格 D.不合格
13.在Python当中,range(1,6)生成的整数列表是( )
A.[1,2,3,4,5,6] B.[1,2,3,4,5]
C.[2,3,4,5,6] D.[2,3,4,5]
14.在程序设计当中,面对大量重复的问题,宜使用( )来提高效率
A.顺序结构 B.选择结构 C.循环结构 D.重复结构
15.在使用if语句时需要注意,在if(条件表达式)后面要加英文符号( )
A.: B., C.. D.;
二、填空题
16.实现循环控制的三要素是 、 和 。
17.在 IDLE 编辑器中运行以下程序,依次输出的数字是 。
for i in range(1,5):
print(i,end="," )
18.在 IDLE 编辑器中运行以下程序,屏幕打印 颗*。
for i in range(0,10,2):
print(" *" )
19.在循环结构中,break语句的作用是 。
20.当飞船速度“v>=7.91”时,输出“飞船成功飞行!”,否则输出“飞船不能升空!”。
v=input(“请输入速度(千米/秒):”) 第1行
if v>=7.91: 第2行
print("飞船成功飞行!") 第3行
else 第4行
print("飞船不能升空!") 第5行
(1)第 行,改正后的语句 。
(2)第 行,改正后的语句 。
三、判断题
21.循环语句可以嵌套使用。( )
22.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )
23.for循环与while循环任何时候都不可以相互替换。( )
24.Python中这两个程序段运行后,虽然变量a中的值是相同的都是12,但程序执行后在屏幕上输出的内容是不完全相同的。( )
25.循环结构表示程序反复执行某个或某些操作,直到判断条件为真时才可以终止循环。( )
四、操作题
26.小陈在学习历史时,发现从公元1000年至今,有的日期特别“优美”,如1010年01年01日,2021年12月02日,小陈把它们称为“对称日”。为了寻找指定年份中的“对称日”,小陈编写了如下的Python程序,程序运行结果如下图所示。
(1)主程序,加框处的代码存在错误,请在下划线处改正。
ks=int(input("请输入开始年份:"))
js=int(input("请输入结束年份:"))
for i in range(ks,js+1):
k1=str(i)
k1=k1+ #根据年份,生成8位对称日期
if check(k1)==True:#验证8位对称日期是否存在逻辑错误
print(k1)
(2)check(x)函数功能:判断8位日期x是否存在逻辑错误,若存在逻辑错误,返回False,否则返回False。请完成代码填空。
def check(k):
y=int(k[0:4])
m=int(k[4:6])
d=int(k[6:8])
if month(m)==False:#调用month(m)函数,判断月份是否存在逻辑错误
return False
if days(y,m,d)==False:#调用days(y,m,d)函数,判断日期是否存在逻辑错误
return False
return
(3)leapyear(y)函数功能:判断年份y是否为闰年,若为闰年,返回True,否则返回False。请完成代码填空。
def leapyear(y):#判断闰年
flag=
if y%4==0 and y%100!=0:
flag=True
elif y%400==0:
flag=True
return flag
(4)month(m)函数功能:用于判断月份是否超出范围1~12月,若没有超出范围,返回True,否则,返回False。请完成代码填空。
def month(m):#判断月份是否满足要求
flag=True
if :
flag=False
return flag
(5)days(y,m,d)函数功能:根据年份y判断是否闰年,结合月份确定该月份m的天数,若d超过该月天数,返回False,否则返回True。请完成代码填空。
def days(y,m,d):#判断天数是否满足要求
lst=[31,28,31,30,31,30,31,31,30,31,30,31]
if leapyear(y) and m==2:
k=
else:
k=lst[m-1]
if d<1 or d>k:
return False
else:
return True
27.学校筹办校庆,向校友提供“教室预约”服务。校友以班级为单位,在线提交预约申请。学校当前预备了m个教室,按“教室名”升序排序后编定“教室序号”。教室信息和预约申请内容如下图所示(教室已按教室名升序排序,预约申请中“预约序号”为0的记录表示:91届1班的校友申请在8:00-9:30期间使用教室)。

图1 图2
学校按“预约序号”顺序,逐条处理预约申请,处理时按“教室序号”顺序,逐个教室检查,安排使用第一个预约时间不冲突的教室。按此规则逐条处理上图的10条申请,“立德楼101”教室将安排“预约序号”为0、2、3、8的申请。
编写程序实现预约功能,按时间顺序输出各个教室接受的预约安排,如图3所示。
图3
部分代码如下,请回答以下问题。
(1)上例中若新增一个使用时间为“8:00-9:00”的申请,应安排的“教室序号”为 。(填写0-8的数字)
(2)定义check(k,i)函数,功能为判断预约序号为k的申请,能否安排到序号为i的教室。
def check(k,i):
n= len(jslst[i][2])#列表jslst[i][2]存储教室序号为i的教室已接受的预约序号
if n == 0:
return True
for p in jslst[i][2]:
if not(yylst[k][3] <= yylst[p][2] or ____):
return False
return True
划线处应填写代码:
(3)定义work(k)函数,功能为依次枚举每个教室,为“预约序号”为k的申请安排教室。
def work(k):
p= -1
for i in range(len(jslst)):
if____:
jslst[i][2].append(k)#将“预约序号”k存入“教室序号”为i的教室
p=i
break
return p
划线处应填写代码:
(4)定义sort(a)函数,参数列表a中的存储“预约序号”,将这些申请按题意排序。
def sort(a):
n = len(a)
for i in range(n-1):
for j in range(0,n-i-1):
if yylst[a[i]][2] > yylst[a[i+1]][2]:
a[i],a[i+1] = a[i+1],a[i]
若将划线处的代码修改为yylst[a[i]][3] > yylst[a[i+1]][3],排序结果会不会改变 。(填:会/不会)
(5)主程序。读入预约申请信息存入列表yylst,存储格式为[预约班名,开始时间,结束时间,教室序号],如[3,'00届5班','10:30','11:30',1],“预约序号”为3的申请,安排在“教室序号”为1的教室,时间格式统一为5位字符组成"XX:XX"。
读入升序排序的教室清单存入一维数组jslst,如[0,'立德楼101',[0,2,4]],表示“教室序号”为0的教室,接受“预约序号”为0,2,4的3个预约申请。
for i in range(len(yylst)): #按“预约序号”顺序,逐条处理预约申请
t = work(i)
if________:
print("预约序号为",i,"的申请无法被安排")
else:
yylst[i][4] = t
for i in range(len(jslst)):#对各个教室接受的预约安排进行排序
sort(jslst[i][2])
#输出各个教室接受的预约安排,代码略。
划线处应填写代码:
五、简答题
28.定义函数的基本格式是: 。
29.在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:
① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。
4 1 5 2 3 a(1)~a(n)中存储第一个分配方案
2 3 4 5 1 a(n+1)~a(2*n)中存储第二个分配方案
↑第i列中的作品拿给i号参赛者打分
图a
②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。
③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。
小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。
请回答下列问题:
(1)n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是 (单选,填字母:A.5 4 3 1 2/B.5 4 1 3 2/C.3 4 5 1 2)
(2)请在划线处填入合适的代码。
Dim n As Integer '总人数/总作品数
Dim m As Integer '每人分配篇数
Dim a(1 To 500) As Integer '数组a大小满足处理要求
Dim c(1 To 100) As Integer '数组c大小满足处理要求
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
n = Val(Text1.Text): m = Val(Text2.Text)
Randomize
i = 1
Do While i <= m
For j = 1 To n
c(j) = 0 '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1
Next j
For j = 1 To n
If j = n - 1 And c(n) = 0 Then

Else
k = r(n, j)
End If
a((i - 1) * n + j) = k '分配数字k到当前方案的第j个位置上
c(k) = 1
Next j
If ② Then i = i + 1
Loop
s = ""
For i = 1 To n
s = "参赛者" & i & ":"
For j = 1 To m
s = s + Str(a((j - 1) * n + i))+ ","
Next j
List1.AddItem s
s = ""
Next i
End Sub
Function r(x As Integer, y As Integer) As Integer
'生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0
End Function
Function check(c As Integer) As Boolean
'本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE
Dim p As Integer,f As Boolean
f = True
p = 1
For i = 1 To c * n
If ③ Then
f = False: Exit For
End If
p = p mod n +1
Next i
check = f
End Function
参考答案
1.A
2.D
3.B
4.B
5.C
6.A
7.D
8.B
9.C
10.D
11.D
12.C
13.B
14.C
15.A
16.初值 终值 循环体
17.1,2,3,4
18.5
19.结束当前循环/终止当前循环
20.1 v = float(input("请输入速度(千米/秒):")) 4
else:
21.正确
22.正确
23.错误
24.正确
25.错误
26.k1[::-1] True False m==0 or m>12 lst[m-1]+1或29
27.2 yylst[k][2] >= yylst[p][3] check(k,i) 或 check(k,i)==True 不会 t==-1
28.def 函数名(参数):
#函数说明
语句或语句组
return 返回值
29.(1)B
(2)①k= n ②check(i - 1) ③a(i) = a(c * n + p)

展开更多......

收起↑

资源预览