内容正文:
4.4运用循环结构描述问题求解过程2023—2024学年高中信息技术粤教版(2019)必修1
一、选择题
1.有如下Python程序
s1="0312"; s2="ABCDEFGH"
m=0; c=""
for i in range(len(s2)):
k=int(s1[i%4])
m=4*(i//4)
c+=s2[k+m]
执行该程序段后,变量c的值是( )
A."ADBCADBC" B."ABCDEFGH" C."AHBGCFDE" D."ADBCEHFG"
2.某算法程序段如下:
Dim s1 As String, s2 As String, ch As String
Const code ="@*()&#"
s1 = Text1.Text
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If ch >= "a" And ch <= "z" Then
t=(Asc(ch)-65+i)Mod7
s2 = Mid(code, t+1, 1)+ s2
Else
s2= s2+ ch
End If
Next i
Text2.Text = s2
若text1中输入字符“AbCd”,则text2中输出的是( )
A.AC^@ B.^@AC C.^<@& D.A^C@
3.在Python中,如下的代码输出结果是( )
x=0
for i in range(10):
x=x+i
print(x)
A.55 B.45 C.10 D.0
4.数组元素a[0]至 a[n-1]依次存放着n个数据,现需要将下标为 x(0≤x≤n-1)元素在逻辑上删除,例如:n为5,数组a为[1,3,5,7,9] ,x为2,删除操作后输出[1,3,7,9]。实现该功能的程序段如下,横线中应填入的正确代码为( )
a=[1,3,5,7,9]
n=len(a)
x=2
for i in range(① ):
②
print(a[:-1])
A.①x,n ②a[i-1]=a[i] B.①n-x ②a[i-1]=a[i] C.①x,n ②a[i]=a[i+1] D.①x-n,-1 ②a[i]=a[i+1]
5.有如下VB程序段:
For i = 1 To 6
a(i) = Int(Rnd() * 10) + 1
If a(i) Mod 2 = i Mod 2 Then
a(i) = a(i) + 1
Else
a(i) = a(i) Mod 2
End If
Next i
执行该程序段后,在下列选项中,a(1)~a(6)各元素可能的值是( )
A.0,1,1,0,0,1 B.0,5,6,6,10,9
C.2,3,6,7,8,11 D.2,1,8,3,12,5
6.在运行for循环语句程序时,没有错误提示但结果不对,此时应该检查( )
A.for语句是否有冒号 B.循环语句是否存在逻辑错误
C.for语句保留字是否正确 D.循环体语句是否正确缩进
7.以下程序的运行结果是( )
A.i!=t B.i!=1 C.i!=6 D.3!=6
8.有如下VB程序段:
k=3:sum=0:j=0:c=0
For i=1 To Len(s)、
ch=Mid(s,i,1)
If ch >= ''0''And ch<= ''9'' Then
c=c * 10+Val(ch)
j=j+1
Else
If j=k Then sum=sum+c
j=0:c=0
End If
Next i
字符串s为''ab300cde2022fg002h'' 时,执行该程序段后,sum的值为( )
A.300 B.302 C.504 D.2324
9.求非空子串。输入一组不重复的字符串s,求其所包含的所有非空子串,并输出。如字符串“abc”的非空子串有“a”、“b”、“c”、“ab”、“bc”、“abc”。实现该功能的Python程序段如下:
s = input ("输入一组不重复的字符串")
for i in range(len(s)):
for j in range( (1) ):
print( (2) )
上述程序段中方框处可选代码为( )
①i, len (s) ②len(s)-i ③s[j:i+j]
④s[i:j+1] ⑤s[j-i:j+1] ⑥s[j:len(s)-i]
则(1)(2)处代码不能实现上述功能的是( )
A.①④ B.①⑤ C.②③ D.②⑥
10.学校历届校友的海量数据存储在校网络中心服务器中(共10000条,无重复数据),某管理员因为误操作删除了一位校友的ID号(8位整数)信息,恰好在备份数据库中保存了一份所有人员ID号的文件(无重复数据,无序)。参考流程图阅读下列快速找出被误删的ID号程序代码
关于异或,下列选择错误的是( )
A.target=target^int(line)是异或运算
B.异或应用于逻辑运算,其运算法则为:0^0=0,1^0=1,0^1=1,1^1=0
C.0异或任何数=任何数,1异或任何数=任何数取反,任何数异或自己=把自己置0
D.以上都不对
11.有如下程序段:
a=[[2,2,1],[8,0,4],[3,3,0],[6,-1,2],[8,1,-1]]
ans=head=3
p=a[head][2]
while p!=-1:
if a[ans][0] < a[p][0] :
ans=p
p=a[p][2]
print(ans,a[ans][0],sep=",")
则程序运行后,下列说法正确的是( )
A.链表数据值依次为2->8->3->6->8
B.程序输出结果为4,8
C.a[0][2]的值为1,双向链表a的头节点数据值为2
D.a[1][1]的值为0,双向链表a的尾节点数据值为8
12.有如下Python程序段
s="aabbccabc"
st=s[1]
for i in range(1,len(s)):
if len(st)==0 or s[i]!=st[len(st)-1]:
st=st+s[i]
else:
st=st[0:len(st)-1]
print(st)
运行该段代码后,输出结果为( )
A.abc B.abcabc C.ababc D.aabbc
13.有如下 Python 程序段:
n=10
m=0
d=[False]*10
for i in range(1,int(n**0.5)+1):
j=3*i
while j<n:
d[j]=not d[j]
j=j+3
for i in range(n):
if d[i]:
m=m+1
print(m)
执行该程序段后,变量 m 的值为( )
A.2 B.1 C.3 D.0
14.下面程序段的循环结构执行后,y的输出值是( )
程序段为: For i=1 to 10 step 2
y=y+i
Next i
print i;
A.25 B.10 C.11 D.因为Y的初值不知道,所以不确定
15.有如下VB程序段:
Const n = 6
Dim a(0 To n)As String
Dim i As Integer,j As Integer
a(1)="118":a(2)="36":a(3)="98":a(4)="15":a(5)="88":a(6)="2"
For i = 2 To 4
a(0)= a(i): j = i - 1
Do While a(0) < a(j)
a(j + 1)=a(j)
j =j - 1
Loop
a(j + 1)= a(0)
Next i
执行该段程序后,数组元素a(1)到a(6)的值依次为( )
A.“118”、“15”、“36”、“98”、“88”、“2” B.“2”、“15”、“36”、“88”、“98”、“118”
C.“2”、“15”、“36”、“118”、“88”、“98” D.“15”、“36”、“98”、“118”、“88”、“2”
16.以下程序段的运行结果是( )
sum=0
for i in range(1, 11):
sum+=i
print(sum)
A.10 B.11 C.55 D.66
17.某算法的部分流程图如图所示:
若要用VB语言实现该部分算法,下列代码正确的是( )
A. B. C. D.
18.求16~40所有偶数的和,在<1>、<2>、<3>处填入的正确代码是( )
A.0 2 2 B.1 1 (i+1) C.0 2 i D.1 3 i-1
19.有如下Python程序段:
import random
q=[0]*8;head,tail=0,4
for i in range(4):
k=random.randint(0,10)
if k%2==0:
q[tail]=k%5
tail+=1
else:
head+=1
while head<tail:
print(q[head],end="")
head+=1
程序执行后,输出的结果可能为:( )
A.0 0 0 0 2 3 0 9 B.0 0 0 0 C.0 1 2 3 4 D.2 3
20.下面的代码,哪个选项会输出1,2,3三个数字( )
A.
for in range(3):
print(i)
B.
L=[0,1,2]
for i in L :
print(i+1)
C.
i=1
while i<3:
print(i)
i+=1
D.
for in range(4):
print(i+1)
A.A B.B C.C D.D
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查的是Python循环语句。由程序中c += s2[k+m]可知,从s2 中取值由k+m确定,k的取值依次为“03120312”,而m的取值依次为“00004444”,可知k+m的取值依次为“03124756”,所以答案为“ADBCEHFG”,故本题应选D。
2.B
【详解】本题主要考查VB中程序执行。程序显示碰到小写字母,从code里取出一个字符,倒序,其它字符顺序,所以2个大写字母,2个小写字母,大写放后面,小写取符号放前面,因此B选项正确。
【点睛】
3.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(0, 5) 等价于 range(0, 5, 1)。故循环结束后,x=x+i=0+1+2+3+4+5+6+7+8+9=45,故本题选B选项。
4.D
【详解】本题考查程序分析。需要指定range的参数,确定遍历的下标。range的参数可是使用负数索引,故从x-n到-1。每次遍历后一个数覆盖前一个数,实现删除,故a[i]=a[i+1]。正确答案为选项D。
5.C
【详解】本题考查VB程序综合能力,循环语句,选择语句。外循环For i = 1 To 6,循环总共执行六次。 根据a(i) = Int(Rnd() * 10) + 1,a(i)数组的初值范围应该是[1,10],而在后面的语句中有 a(i) = a(i) + 1,故a(i)的最大值应该不会超过11,故先将选项D排除。再根据判断If a(i) Mod 2 = i Mod 2 Then,若a(i)的奇偶性和i相同,则 a(i) = a(i) + 1,否则a(i) = a(i) Mod 2。不妨分类讨论,当i=1,3,5的时候,若a(i)是奇数,则a(i) = a(i) + 1变为偶数,否则执行a(i) = a(i) Mod 2,则a(i)=0。所以第1,3,5项是偶数或者0,根据这个可将A排除。再根据i=2,4,6时,a(i)是奇数或者a(i)=1,结合判断可将B排除。故本题最终C是正确选项。
6.B
【详解】本题考查循环语句。当在运行for循环语句程序时,没有错误提示但结果不正确,通常表示存在逻辑错误,这意味着程序的控制逻辑不符合预期,导致循环的执行不如预期那样。因此,应该检查循环语句中的逻辑,包括循环条件、循环变量的变化、循环体内的操作等,以确定问题出在哪里,并进行适当的修正。故答案为B选项。
7.D
【详解】本题主要考查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)。故变量i的取值依次是1、2、3,循环结束后t=t*i=1*1*2*3=6,即运行结果是3!=6,故本题选D选项。
8.B
【详解】本题考查的是VB字符串处理。阅读程序可知,变量sum用于存储字符串s中连续3位都是数字的总和,变量j是用于统计连续都是数字的位数,若检测到连续3位都是数字子串后,接着遇到非数字字符时,将该3位数字子串c的值累加到sum中,同时清空变量c、j。字符串s中符合要求的数字子串只有“300”和“002”,故sum=300+002=302,选项B正确。
9.C
【详解】本题考查的是Python循环嵌套。如果内循环选择len(s)-i,由于切片s[j:i+j]中不包含i+j,故需将s[j:i+j]改为s[j:i+j+1]才能取到i+j,故选项C不能实现上述功能。
10.D
【详解】本题主要考查算法流程图及Python程序实现。target=target^int(line)是异或运算;异或应用于逻辑运算,其运算法则为:0^0=0,1^0=1,0^1=1,1^1=0;0异或任何数=任何数,1异或任何数=任何数取反,任何数异或自己=把自己置0,故本题选D选项。
11.D
【详解】本题主要考查链表及Python程序。分析程序可知,a是双向链表,ans=head=3,故链表数据值依次为6->3->2->8->8;程序运行结束后,ans=1,a[ans][0]=8;a[0][2]的值为1,head=3,双向链表a的头节点数据值为6;a[1][1]的值为0,双向链表a的尾节点数据值为8,故本题选D选项。
12.A
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将s中相邻不相等的字母依次拼接到变量st中,相等字母跳过,s="aabbccabc",故运行该段代码后,输出结果为abc,故本题选A选项。
13.A
【详解】本题主要考查Python程序的执行与调试。初始时,数组d均为False。变量i的范围是1~3,当i=1时,d[3]=True,d[6]=True,d[9]=True;当i=2时,d[6]=False,d[9]=False;当i=3时,d[9]=True,变量m统计列表d中值为True的个数,只有d[3]、d[9]值为True,故c=2,故本题选A选项。
14.A
【详解】本题主要考查程序循环结构执行。题中For循环,步长值为2,循环变量依次为1,3,5,7,9,循环体中将循环变量依次累加至变量y;y没有声明或定义,它就是变体型,y=y+i,可知在该处y为整型,初始默认为0,故y=1+3+5+7+9=25,A选项正确。
15.D
【详解】本题主要考查VB程序的执行。当i=2时,a(0)=a(2)=36,j=i-1=1,执行完while循环后,数组元素a(1)到a(6)的值依次为36,118,98,15,88,2,当i=3时,a(0)=a(3)=98,j=i-1=2,执行完while循环后,数组元素a(1)到a(6)的值依次为36,98,118,15,88,2,当i=4时,j=i-1=3,执行完while循环后,数组元素a(1)到a(6)的值依次为15,36,98,118,88,2,故执行该段程序后,数组元素a(1)到a(6)的值依次为15,36,98,118,88,2,故本题选D选项。
16.C
【详解】本题主要考查Python程序的执行。sum初始值为0,变量i的范围是1~10,循环体是sum+=i,故程序段的运行结果是sum=sum+i=0+1+2+3+4+5+6+7+8+9+10=55,故本题选C选项。
17.B
【详解】本题主要考查算法流程图知识点。初值s=0,i=1,使用for循环,i的范围是从1-10,满足条件执行s=s*2+i,故要用VB语言实现该部分算法可用B选项中的代码,故本题选B选项。
18.C
【详解】本题考查的是Python循环语句。求16~40所有偶数的和,可将初始s设为0,循环步长设置为2,每次进入循环加i,故本题应选C。
19.B
【详解】本题考查Python程序的分析。k=random. randint (0, 10),k随机生成0~10, 由q[tail]=k%5可知,q列表中不可能出现9,排除A选项;for循环一共循环4次,若q中有1、2、3、4,说明没有执行head+=1,则C应是00001234,排除C选项;如果k是连续生成0或10两个再生成两个奇数,选项B可能;选项D有2、3,则说明head+=1至多执行2次,因此输出结果一定有0,排除D选项。故正确答案选B。
20.B
【详解】本题主要考查Python代码。A项代码结果:0 1 2, B项代码结果:1 2 3, C项代码结果:1 2,D项代码结果:1 2 3 4,故本题选B。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$