内容正文:
4.4运用循环结构描述问题求解过程 2023—2024学年高中信息技术粤教版(2019)必修1
1.有两个VB程序段,如下所示:
已知程序段中①②两处内容相同,数组元素a(1)到a(10)的值依次为:6,43,21,78,33,16,80,45,12,90,执行“程序段1”后,数组元素a(1)~a(10)的值依次为80,78,90,45 ,43,33,21,16,12,6,则下列说法正确的是()
A.①和②处的填空为7
B.两程序段的比较次数不一样,交换次数一样
C.执行完程序段2后,数据6移动到了a(10)
D.两段程序的得到的运行结果相同
2.在python中,以下程序是计算1-100的奇数和,完善程序,第二行划线处应该填写( )
s=0
for x in range( ):
s=s+x
print(x)
A.1,2,100 B.1,3,100 C.1,100,2 D.1,99,2
3.有如下程序段:
Fori=1ToLen(Text1.Text)
c=Mid(Text1.Text,i,1)
Ifc>="0"Andc<="9"Thenc=Chr(Asc(c)+1)
Ifc>="A"Andc<="Z"Thenc=Chr(Asc(c)+32)
s=s+c
Nexti
若文本框Text1的内容为“Number2468!”执行程序后,变量s的值为( )
A.NUMBER3579! B.NUMBER2468! C.number3579! D.number2468!
4.提取字符串中的数字并存放到列表中,程序中划线处的代码为()
s="12,345,67"
a=[]
t=0
n=0
for i in range(len(s)):
if s[i]==",":
t=int(s[n:i])
a.append(t)
①
if i==len(s)-1:
t=int( ② )
a.append(t)
print(a)
A.①n=i ②s[n:i+1] B.①n=i+1 ②s[n:i]
C.①n=i+1 ②s[n:i+1] D.①n=i ②s[n:i]
5.有如下Python程序:
import random
a=[0]*6
i=0
while i<6:
a[i]=random. randint (1, 10)
if a[i] in a[0: i]:
i-=1
i+=l
for i in range (6):
if i%2==0 and a[i]>a[i+1]:
a[i], a[i + 1]=a[i+1], a[i]
else:
a[i]+=a[i]%2
print(a)
执行此程序后,数组a中不可能的结果为( )
A.[4, 6, 4, 8, 7, 10] B.[3, 11, 6, 8, 1, 4] C.[1, 4, 4, 8, 6, 8] D.[4, 8, 2, 4, 6, 8]
6.有如下Python程序段:
a=[0]*10
for i in range(16):
j=0;a[j]=a[j]+1
while a[j]==3:
a[j]=0
j=j+1
a[j]=a[j]+1
执行该程序后,数组a中各元素之和为( )
A.2 B.3 C.4 D.5
7.写列程序段的执行结果( )。
s="abbabcddcba"
For i=6 to 2 step -2
x=mid(s,i,i)
y=left(s,i)
z=right(s,i)
z=x & y & z
Next i
Print z
A.aba B.aabaab C.bbabba D.abbaba
8.下列有关for循环语句说法正确的是( )。
A.for 循环变量 in 列表后面必须加冒号
B.For循环所包含的语句是不以缩进为标志的。
C.列表的几种表达方式有直接罗列,先定义后使用和使用range()函数
D.For循环所包含的语句是以缩进为标志的。
9.以下python程序的主体控制结构是( )
for num in range(1,10):
if num==3:
continue
print(num,end=" ")
A.循环结构 B.选择结构 C.顺序结构 D.分支结构
10.下列Python程序段执行后,语句s=s+i执行的次数是( )
s=0
i=1
while i<5:
s=s+i
i=i+1
print(s)
A.2次 B.3次 C.4次 D.5次
11.有如下VB程序段:
若该程序段执行后,在文本框Text1中输入的字符串长度不超过10,文本框Text2中输入的值在0到8范围内(输入输出都不包括双引号本身),下列说法不正确的是( )
A.若在文本框Text1中输入“ZGBG”,Text2中输入“0”,则Text3中显示“ZG,GB,BG”
B.若在文本框Text1中输入“CCAA”,Text2中输入“1”,则程序运行结束时变量c的值为2
C.将数组a的定义语句改为“Dim a(1 To 9) As String”,程序依然能够正确运行
D.若a(1)到a(4)的值为“AB”,“AC” ,“BC” ,“AC”,则调用函数check(4)的结果为False
12.有如下 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]
13.如下Python程序段:
while x !=0:
x = int(input("x="))
if (x%3)+x//3=5 : print("x="; x)
运行后,当第一次输入5、第二次输入11、第三次输入0后,在窗体上显示的结果是( )
A.x=5 B.x=11 C.9 D.11
14.某VB程序段如下所示:
Dim x As String
Private Sub Form_Load()
x = ""
End Sub
Private Sub Text1_Change()
Dim s As String, k As String
Dim i As Integer
s = "0123456789ABCDEF"
k = Text1.Text
For i = 1 To Len(s)
If Mid(s, i, 1) = k Then x = x + k
Next i
If x = "" Then x = "没有找到!"
Label1.Caption = x
End Sub
若在文本框Text1中依次输入“2”和“9”,则Label1上显示的内容为
A.11 B.2 C.9 D.29
15.有如下 Python程序段:
s=''AB18/31C5/D269/E7''
k=3
sum, j,c=0,0,0
flag=False
for ch in s:
if "0"<=ch<="9":
c=c*10+int(ch)
j+=1
elif ''A''<=ch<=''Z'':
flag=True
else:
if j==k and flag:
sum+=c
flag=False
j=0;c=0
程序运行后,sum的值是( )
A.269 B.330 C.584 D.609
16.已知字符串 s 是由字母和数字组成的,现要用 VB 程序实现如下功能,将字符串中的数字字符按照原有顺序移动到 s 的左边,字母字符按照原有顺序移动到字符串右边,如 s=“Su2cc0ess20”执行完程序后变成 s=“2020Success”,为实现上述功能,在横线处填入的代码应该是( )
m=0:k=0
For i = 1 To Len(s)
ch = Mid(s, i, 1)
k = k + 1
If ch >= "a" And ch <= "z" or ch >= "A" And ch <= "Z" Then
a(k) = ch
Else
m = m + 1: ①
Do While j > m
②
j = j - 1
Loop
③
End If
Next i
n = Len(s): s = ""
For i = 1 To n
s = s + a(i)
Next i
A.①j=k ②a(j)=a(j-1) ③a(m) = ch B.①j=k ②a(j)=a(j+1) ③a(j+1)=ch
C.①j=k-1 ②a(j)=a(j-1) ③a(m) = ch D.①j=k-1 ②a(j)=a(j-1) ③a(j+1)=ch
17.输入一个字符串,要求统计连续出现的字符次数最多有几次,例如输入s="AABDDD",字符“A”出现2次,字符“B”出现1次,字符“D”出现3次,故最终输出3。
s=input()
Max=0
C=1
for i in range( ① ,len(s)):
if s[i]==s[i-1]:
c+=1
if c>Max:
②
else:
c=1
print(Max)
程序代码如上所示,其中①和②处的应填入的代码是( )
A.0和Max+=1 B.1和c=Max C.0和Max=c D.1和Max=c
18.下列Python程序段的运行结果是( )
s=0
for i in range(1,11):
s=s+i
print(s)
A.55 B.15 C.0 D.5
19.有如下程序段:
Dim s(1 To 81) As Integer, i As Integer, j As Integer, c As Integer, temp As Integer
c=0 : s(1) = 0
For i = 1 To 9
For j = 1 To i
temp = s(j * i)
s(j * i) = j * i
If temp <> s(j * i) And s(j * i) Mod 9 = 0 Then c = c + 1
Next j
Next i
该程序段运行后,变量 C 的值为( )
A.9 B.10 C.11 D.12
20.以下代码的是作用是绘制什么图形( )
A.三角形 B.正方形 C.五角星 D.正五边形
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查冒泡排序。根据题干,执行“程序段1”后,数组元素a(1)~a(10)的值依次为80,78,90,45 ,43,33,21,16,12,6,可知a(10)-a(4)实现排序,故整个排序执行了七趟。根据程序段1,双重for循环的内循环for j=1 to 10-i,这是一个下沉的排序,对整个程序段总共要执行七趟,那么i的变化是1-7,故外循环填入7。选项A正确。两个程序段都执行七趟,比较次数一样。执行完程序段2后,数据6移动到了a(8)。故本题选A。
2.C
【详解】本题考查的是range函数。格式:range(起始值,结束值,步长)结束值不包含,步长可省略,默认为1。计算1-100的奇数和,故起始值为1,结束值为100(最后一个奇数为99),步长为2。选项C正确。
3.C
【详解】本题考查VB程序段。若文本框Text1的内容为“Number2468!”,根据代码for i=1 to len(text1.text),c=Mid(Text1.Text,i,1),If c>=“0”Andc<=“9”Thenc=Chr(Asc(c)+1),若取出的字符c是数字,则往后推移一个数字。Ifc>=“A” And c<=“Z”Then c=Chr(Asc(c)+32),如果取出的字符c是大写字母,则变为小写字母。其余字符不变。故可知本题选C。
4.C
【详解】本题主要考查Python程序的综合应用。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。取列表中一部分数据元素时,可以通过分割的两个索引参数实现。包含第一索引参数指向的元素,不包含第二个索引参数指向的元素。因此①处n=i+1,表示","字符的下一个字符。②处填写s[n:i+1],其中索引i+1表示字符串中的最后一个字符,故本题选C选项。
5.B
【详解】本题考查的是Python调试与运行。由a[i]=random. randint (1, 10)可知随机生成a[i]的值范围1~10,选项B中a[1]=11,故其只能通过 a[i]+=a[i]%2执行得到,执行该语句后a[i]的值范围2~10,不可能为11。故选B。
6.C
【详解】本题主要考查Python程序的执行。变量i的范围是0~15,因此外循环一共执行16次,依次带入执行,循环结束后列表a=[1, 2, 1, 0, 0, 0, 0, 0, 0, 0],因此数组a中各元素之和为1+2+1=4,故本题选C选项。
7.C
【详解】本题主要考查VB程序的执行。mid(a,b,c)从字符串a中位置b开始截取长度为c的字符串,left(a,b)从字符串a的左边截取长度b的字符串,right(a,b)从字符串a的右边开始截取长度为b的字符串,最后一次循环,x=mid(s,2,2)=“bb”,y=left(s,2)= “ab” ,z=right(s,2)=“ba”, z=x & y & z=“bbabba”,故本题选C选项。
8.ACD
【详解】本题主要考查Python的for循环语句。for 循环变量 in 列表后面必须加冒号、列表的几种表达方式有直接罗列,先定义后使用和使用range()函数、For循环所包含的语句是以缩进为标志的。故本题选ACD选项。
9.A
【详解】本题主要考查Python控制结构。分析程序可知,该程序的主体控制结构是循环结构,循环结构嵌套分支结构,故本题选A选项。
10.C
【详解】本题考查Python程序调试。变量i初值是1,循环条件是i<5,因此i取1、2、3、4,即循环4次。故选C。
11.B
【详解】本题主要考查VB程序的执行。若在文本框Text1中输入“CCAA”,Text2中输入“1”,则s=CCAA,k=1,第一遍循环后c=1,第二遍循环,先执行c=c+1=2,check(2)=Flase,执行c=c-1=2-1=1,循环结束,故程序运行结束时变量c的值为1,故本题选B选项。
12.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。
13.B
【详解】本题主要考查Python程序的执行。第一次循环,x=5,不满足if判断条件;第二次循环,x=11,满足if判断条件,输出x=11;第三次循环,x=0,不满足if判断条件,循环结束,故本题选B选项。
14.D
【详解】本题主要考查VB程序的执行。文本框Text1中依次输入“2”和“9”赋值给k,这两个值都可以在字符串s中找到,如果找到执行x = x + k,x是字符串型,则Label1上显示的内容29,故本题选D选项。
15.C
【详解】本题考查的是Python程序调试与运行。阅读程序可知,逐个读取字符串中的字符,如果是数字则转换为数值类型;如果是大写字母,则标志位flag为真;如果不是大写字母也不是数字且标志位flag为真同时是三位数字,则将数字累加到sum,标志位flag为假,数字及个数初始为0。s=“AB18/31C5/D269/E7”,
读取到第一个“/”时,由于数字不满足三个标志位flag为假,数字及个数初始为0;
读取到第二个“/”时,由于数字为315满足三个,标志位flag为真(读取大写字母C),则将数字累加到sum=315;
读取到第三个个“/”时,由于数字为269满足三个,标志位flag为真(读取大写字母D),则将数字累加到sum=315+269=584。
后续数字不会满足三个,不会累加sum,故选C。
16.A
【详解】本题考查VB程序段。题目要求,将字符串中的数字字符按照原有顺序移动到s的左边,字母字符按照原有顺序移动到字符串右边,又根据代码可知,当变量ch是字母时,将ch存放在数组元素a(k)中,即a(k)=ch。当ch是数字时,执行Else部分,根据选项和代码结构,可判断else部分的功能是将ch中的数字存放在数组元素a(m)中,如果a(m)中已经有字母存在,则需要将从a(m)至a(k)的数组元素向后移动一位。故由此判断,代码第一空填入j=k,代码第二空实现数组后移一位,填入a(j)=a(j-1),代码第三空将ch存入数组中,即a(m)=ch。故本题选A。
17.D
【详解】本题主要考查Python程序的调试。由代码 s[i]==s[i-1]可知,i从1开始,变量c统计连续出现字符的次数,Max保存最多次数,当c>Max时,则更新Max=c,故①和②处的应填入的代码是1和Max=c,选D选项。
18.A
【详解】本题主要考查Python循环语句。for循环中i的变化范围是从1~10,循环结束时i=10,s=0+1+2+3+4+5+6+7+8+9+10=55。故选A。
19.A
【详解】本题考查数组、循环嵌套和枚举算法。外层共9次循环,第一次循环,s(j * i)=1*1=1;第二次循环,内层循环执行两次,s(j * i)的值分别为2、4;……;依次类推枚举s(j * i)的值如下图:
temp <> s(j * i) And s(j * i) Mod 9 = 0 temp 记录的是 s(j * i)上一次被赋值的量,只有当上一次未被赋值,且能被 9 整除时 C 才能自增 1,因此由表中能被 9 整除的项总计 12 个,有 3 项重复,因此答案为 9 个。最后一行数据为 9 的 1,2,3,4……9 的倍数的枚举,涵盖了表中所有能被 9 整除的情况,由此也能直接得出结论 C 为 9, 选项A正确
20.D
【详解】本题主要考查Python代码。该代码用于绘制图形,forward用于绘制向前为长度100的直线,left为角度旋转72度,循环5次,就可以得到正五边形,故本题选D。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$