内容正文:
4.4 运用循环结构描述问题求解过程
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.某Python程序如下:
s=input("请输入字符串:")
ans=""
a=[1,2,3]
for i in range(len(s)):
x=s[i]
key=a[i%3]
if "A"<=s[i]<="Z":
ans=ans+chr((ord(x)-65+key)%26+65)
else:
ans=ans+x
print(ans)
执行该程序后,输入"B2d5C3"输出的结果为( )
A.66d4CE B.C2d5E3 C.C4g6E6 D.6E6g4C
2.有如下Python程序段:
b=[56,80,10,31,24,52,66,49]
n=len(b)
for i in range(1, 3):
for j in range(0,n-i):
if b[j]>b[j+1]:
b[j],b[j+1]=b[j+1],b[j]
经过该程序段“加工”后,列表b中的元素为( )
A.[10, 24, 31, 49, 52, 56, 66, 80] B.[10, 31, 24, 52, 56, 49, 66, 80]
C.[56, 10, 31, 24, 52, 66, 49, 80] D.[10, 24, 31, 52, 49, 56, 66, 80]
3.某Python程序如下:
s='A3B57e';sl=";i=0
while i<len(s):
if'A'<=s[i]<='Z':
sl=s1+chr(ord(s[i])+32)
elif'0'<=s[i]<='9':
sl=s[i]+s1
i=i+1
print(s1)
运行后输出的结果是( )
A.753abe B.a3b57 C.753AB D.753ab
4.有如下python程序段:
n=4
a=[[j*n+i+1 for j in range(n)] for i in range(n)]
for i in range(0,n,2):
for j in range(n//2):
a[i][j],a[i][n-j-1]=a[i][n-j-1],a[i][j]
则程序执行后,a[0][1]和a[1][1]的值分别为()
A.2和7 B.3和6 C.5和10 D.9和6
5.数组a中存储着某市2010年到 2019 年的GDP数值,编写VB程序,实现找出相邻两年GDP变化最大(即相邻两年GDP差值最大)的年份区间。若有多个符合要求的年份区间,只输出距今最近的年份区间。部分代码如下所示
Dim i As Integer, imax As Integer
①
For i = 3 To 10
If Abs(a(i) - a(i - 1)) >= ② Then imax = i
Next i
Text1.Text = "GDP变化最大的年份区间是" + Str(imax + 2008) + "-" + Str(imax + 2009)
划线处①、②应填入的代码为( )
A.①imax=1 ②Abs(a(i - 1) - a(i - 2)) B.①imax=1 ②Abs(a(imax) - a(imax - 1))
C.①imax=2 ②Abs(a(i - 1) - a(i - 2)) D.①imax=2 ②Abs(a(imax) - a(imax - 1))
6.有下面一段程序:
p = [ 2, 1, 3, 4, 5 ]
c = 0
for i in range( 2, 6, 2 ):
if p[ i - 2 ] + p[ i -1 ] == p[ i ]:
c += 1
print( c )
执行该段程序后,计算机显示的是()
A.1 B.2 C.3 D.4
7.有如下程序段:
Dim i As Integer, t As Integer, s As Integer
s = 0: t = 0
For i = 0 To 10
If i Mod 5 = 0 then s = s + 1
t = t + i
Next i
Text1.Text = Str(s)
执行该程序段后,变量s和t的值分别是( )
A.3 55 B.3 15 C.2 15 D.2 55
8.有如下VB 程序段:
For i = 1 To 7
a(i) = Int(Rnd * 9) + 1
Next i
s = 0
For i = 1 To 6
If a(i) < a(i + 1) Then
f(i) = 1
ElseIf a(i) > a(i + 1) Then
f(i) = -1
Else
f(i) = 0
End If
s = s + f(i)
Next i
执行该程序段后,变量s的值为0,则数组a各元素的值可能是( )
A.9 8 4 1 3 3 9 B.1 2 3 6 5 3 0
C.1 8 6 2 4 3 8 D.6 4 4 5 6 7 1
9.有如下Pyhon程序段,执行程序后输出的结果是( )
a=[1,3,5,7,9]
b=[2,4,6,8,10]
list=[]
for i in range(-1,-5,-1):
s=a[i]+b[i]
list.append(s)
print(list)
A.[3,7,11,15] B.[12,34,56,78,910]
C.[19,15,11,7] D.[19,15,11,73]
10.下面程序中,语句print (i)共执行了( )次。
A.3 B.4 C.5 D.6
11.如下 Python 程序段:
s="D5u6p@1_2t3B"
num=0
for i in s[::-1]:
if "a"<=i<="z" or "A"<=i<="Z" or "0"<=i<="9":
if "0"<=i<="9":
num=num*10+int(i)
else:
break
print(num)
该部分程序段运行后,变量 num 的值是( )
A.21 B.32 C.56 D.65
12.有如下 VB 程序段:
i = 1
Do While i <= 5
a(i) = (Int(Rnd * 6) + 5) * (i Mod 2 + 1)
For j = 1 To i - 1
If a(j) = a(i) Then i = i - 1:
Exit For
Next j
i = i + 1
Loop
执行该程序段后,a(1)到 a(5)各元素的值可能是( )。
A.18,8,16,6,12
B.11,5,10,6,20
C.14,10,12,10,20
D.5,6,7,8,9
13.在python中,以下程序运行后的结果是( )
for i in range(2,6,2):
a=i+1
print(a)
A.4 B.5 C.6 D.7
14.有如下排序程序:
程序运行后,列表a中的内容是( )
A.[20,19,18,15,12,10,10,10,9,3]
B.[3,9,10,10,10,12,15,18,19,20]
C.[19,20,15,18,10,12,10,9,10,3]
D.[20,15,19,10,18,10,12,10,9,3]
15.有如下Python 程序段
s="Li20An24K04ao"; i=0
while i<len(s):
if"A"<=s[i]<="Z":
s=s[:i]+s[i+1:]
elif"0"<=s[i]<="9":
s=s[:i]+str((int(s[i])+8)%10)+s[i+1:]
else:
s=s[:i]+chr((ord(s[i])-95)%26+97)+s[i+1:]
i=i+1
执行上述程序后,s 的值为( )
A.k08p0202co B.i08n0202cq C.i08p0202cq D.h28w22g82o
16.以下程序用于统计自然数1到n之间出现多少个x(0<=x<=9),空缺处应填入的代码是( )
n = Val(Text1.Text)
x = Val(Text2.Text)
k = 0
For i = 1 To n
________①_________
Do While temp <> 0
y= temp Mod 10
If ________②_________ Then k = k + 1
temp = temp \ 10
Loop
Next
Label1.Caption = Str(k)
A.①temp=n ② y=x B.①temp = i ② y=x
C.①temp=i ② i=x D.①temp=n ② i=x
17.有如下 Python 程序段:
s = "AbqqW34mf"; s1 = ""
for i in range(len(s)):
if "a" <= s[i] <= "z":
c = chr(ord(s[i]) - 32)
t = chr((ord(c) - ord("A") -1 + 26) % 26 + ord("A"))
s1 = s1 + t
print(s1)
运行以上程序段后, 输出的内容为( )
A.APPLE B.ELPPA C.ELRPPAU D.UAPPRLE
18.执行下列Python程序段后,变量n的值是( )
n=0
for i in range(1,4):
n+=i
A.4 B.3 C.6 D.1
19.有如下Visual Basic程序段:
Private Sub Command1_ Click ()
Dim a(1 To 10) As Integer, i As Integer, k As Integer
a(1)=1:a(2)=17:a(3)=8:a(4)=9:a(5)=18
a(6)=15:a(7)=20:a(8)=13:a(9)=7:a(10)=11
k=0
For i= 2 To 9
If(a(i)-a(i-1))*(a(i+1)-a(i))< 0 Then k=k+1
Next i
Text1. Text = Str (k)
End Sub
该程序段运行后后,文本框Text1中显示的内容是( )
A.6 B.7 C.8 D.9
20.有如下程序段:
s=1
for i in range(0,10,3):
s+=i
print(s)
程序运行后,输出的内容是( )
A. 20 B.19 C.22 D.31
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题主要考查Python程序的执行。分析程序可知, key=a[i%3],a=[1,2,3],即key依次取1、2、1、2……,当s[i]是大写字母时,执行ans=ans+chr((ord(x)-65+key)%26+65),即将该字母循环后移key个长度再拼接到ans中,当s[i]是其他字符时,直接拼接到ans中,输入"B2d5C3",大写字母B、C变为C、E,其余字符不变,因此输出的结果是C2d5E3,故本题选B选项。
2.B
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现2次冒泡排序,从左往右开始比较,将较大值放到最右边,第一轮循环结束,列表b中的元素为[56,10,31,24,52,66,49,80],第二轮循环结束后,列表b中的元素为[10,31,24,52,56,49,66,80],故本题选B选项。
3.D
【详解】本题考查程序分析。根据代码if'A'<=s[i]<='Z':和'0'<=s[i]<='9':可知,该程序遍历字符串s,取出字母和数字,将大写字符转换成小写,将数字直接加到字符前面,存储在变量s1中,输出s1。故正确答案为选项D。
4.D
【详解】本题主要考查Python程序的执行。分析程序a=[[j*n+i+1 for j in range(n)] for i in range(n)],列表a的值是[[1, 5, 9, 13], [2, 6, 10, 14], [3, 7, 11, 15], [4, 8, 12, 16]]。该程序实现将列表a中的奇数位置列表元素逆转,偶数位置不变,故程序执行完后a的值为[[13, 9, 5, 1], [2, 6, 10, 14], [15, 11, 7, 3], [4, 8, 12, 16]],故a[0][1]和a[1][1]的值分别为9和6,选D选项。
5.D
【详解】本题主要考查VB程序的执行。abs()是求绝对值函数,i的初值为3,a(i) - a(i - 1)=a(3)-a(2),这个区间应该首先与a(2)-a(1)进行比较,故imax=2,第二空填Abs(a(imax) - a(imax - 1)),故本题选D选项。
6.A
【详解】本题主要考查Python程序的执行。变量i的取值有2、4,当i=2时,满足if条件,c=c+1=1,故执行该段程序后,计算机显示的是1,故本题选A选项。
7.A
【详解】本题主要考查VB程序的执行。for循环中,变量i的范围是从0-10,当i是5的倍数时(i=0,5,10),变量s递增,故s=s+1执行了3次,每次循环都执行t=t+i,故程序结束时t=0+1+2+3+4+5+6+7+8+9+10=55,所以执行该程序段后,变量s和t的值分别是3 55,故本题选A选项。
8.C
【详解】本题考查的是VB循环语句。根据语句“a(i) = Int(Rnd * 9) + 1”,可知数组a的各元素为[1,9]范围的整数,故不可能有0,排除选项B。数组f标记前后相邻元素的升降平,1表示升;-1表示降,0表示平。选项A,最终f值为-1,-1,-1,1,0,1,最终s值为-1;选项C,最终f值为1,-1,-1,1,-1,1,最终s值为0;选项D,最终f值为-1,0,1,1,1,-1,最终s值为1,故选C。
9.C
【详解】本题考查的是Python循环结构。range(-1,-5,-1)生成的是-1、-2、-3、-4的序列。-1表示列表的最后一项, list.append(s)将s加入列表list中,故依次加入,9+10=19,7+8=15,5+6=11,3+4=7。故最后输出list为[19,15,11,7]选项C正确。
10.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)。变量i依次取0、1、2、3、4,因此一共执行了5次,故本题选C选项。
11.B
【详解】本题主要考查Python程序的执行。分析程序,s="D5u6p@1_2t3B",for i in s[::-1],变量i是逆着从字符串s中取字符,如果i是字母或数字,则接着判断i是否是数字,如果i是数字则执行num=num*10+int(i);如果i不是字母或数字,则退出循环。当i是“_”时,不满足if判断条件,退出循环,此时num=32,故本题选B选项。
12.A
【详解】本题考查的是VB循环语句。首先考虑取值范围,int(rnd*6)+5 产生随机整数范围是[5, 10],当 i 为奇数时, (Int(Rnd * 6) + 5) * (i Mod 2 + 1)的范围是{10,12,14,16,18,20};当 i 为偶数时, (Int(Rnd * 6) + 5) * (i Mod 2 + 1)的范围是整数[5, 10]。接着 a 数组满足不重复的条件。所以选项 BCD 都不对。
13.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)。可知变量i依次取2、4,循环结束后,a=4+1=5,故本题选B选项。
14.C
【详解】本题主要考查排序算法及Python程序实现。阅读程序段可知,i的取值范围为[0,9],当i=0时,j的取值范围为2,4,6,8。如果满足a[i]<a[j],那么交换两个数的位置,所以最终实现的是偶数位上的降序排列,同理奇数位上也最终实现降序,所以列表a最终的排序为:[19,20,15,18,10,12,10,9,10,3],故本题选C选项。
15.B
【详解】本题考查的是Python循环及多分支语句应用。由if语句可知,如果是大写字母,直接删除;由elif语句可知,如果是数字,0~9构成环,后移8位;由else语句可知,如果是小写字母,a~z构成环,后移2位。需要注意的是删除大写字母时,由于字符串s字符变少,会跳过大写字母后一个字符的处理。初始s="Li20An24K04ao",依据上述原则,处理后s="i08n0202cp",故选B。
16.B
【详解】本题考查VB程序段阅读,枚举算法,循环嵌套。根据题干以及算法整体结构,可推知程序采用枚举算法将所有数据全都列举,然后逐一判断是否包含x,进行统计。①处可根据下方Do while temp<>0 得知,此处应该是对temp赋值,将循环变量赋值给temp,故temp=i
②处根据上下两条语句,y= temp Mod 10以及temp = temp \ 10,可知,Do while循环中将temp从低位开始每一位取出存入y,进而判断y和x是否相等,如相等,则temp中存在一个x,统计变量k=k+1。故推出②处的语句为y=x
17.A
【详解】本题主要考查Python程序的综合应用。语句c = chr(ord(s[i]) - 32)实现将小写字母s[i]转换为大写字母,语句t = chr((ord(c) - ord("A") -1 + 26) % 26 + ord("A"))实现将大写字母C循环左移1位,分析程序可知,当s[i]是小写字母时,将其转换为大写字母后再循环左移一位,将其拼接到变量s1中;遇到其余字符,跳过。故运行以上程序段后, 输出的内容为APPLE,故本题选A选项。
18.C
【详解】本题主要考查Python循环结构。变量i的范围1~3,循环体是n=n+i,故程序执行后,n=n+i=0+1+2+3=6,故本题选C选项。
19.A
【详解】本题考查VB程序段。在FOR循环中,If(a(i)-a(i-1))*(a(i+1)-a(i))<0成立时共有六种情况,分别是i=2,3,5,6,7,9。故本题选A。
20.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)。变量i的取值依次是0、3、6、9,故程序运行后,输出的内容是s=s+i=1+0+3+6+9=19,故本题选B选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$