資源簡介 中小學教育資源及組卷應用平臺2025普通高中信息技術學業水平考試優化集訓9 循環結構的程序實現1.有Python程序代碼如下:x=0for i in range(1,10,3):x+=iprint(x)該程序段執行后,變量x輸出的值是( )A.25 B.36C.12 D.552.有Python程序代碼如下:n=int(input(″計算n!,請輸入n:″))print(n,end='!=')fac = 1while n > 1:fac=fac nn-=1print(fac)該程序段執行后,若輸入變量n的值是4,則輸出的內容是( )A.4!=1 B.4!=24C.4!=0 D.4!=1203.有Python程序代碼如下:for i in range( ):print(i,end=',')若想按次序輸出這組數據:“10,8,6,4,2,”,程序中方框處應填寫的代碼是( )A.10,1,2 B.11,2,2C.10,2,-2 D.10,0,-24.有Python程序代碼如下:list1=[]for i in range(1,21):if i%5==0: breaklist1.append(i)print(list1)該程序段執行后,列表list1中輸出的內容是( )A.[1,2,3,4] B.[1,6,11,16]C.[5,10,15,20] D.[1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19]5.有如下Python程序段,運行該程序,輸出的結果可能的是( )import randomn=random.randint(50,101)a=[]for i in range(2,n):while n%i==0: a+=[i] n//=iprint(a)A.[3,3,3,3] B.[2,2,9] C.[55] D.[5,15]6.有Python程序代碼如下:list1=[7,3,2,9,8,4,6]m1 = m2 = list1[0]for i in range(1,len(list1)):if m1 < list1[i]: m1 = list1[i]elif m2 > list1[i]: m2 = list1[i]print(m1,m2)執行上面程序,變量m1、m2輸出結果是( )A.9 2 B.2 9C.7 7 D.9 97.有如下Python程序段:a=[5,2,7,10,17,25,42,66]c=0for i in range(2,len(a)):if a[i-1]+a[i-2]==a[i]: c=c+1print(c)運行程序后,輸出的內容是( )A.2 B.3 C.6 D.78.有如下Python程序段:a=[3,4,2,5,6,7,7,1,2]m,c,i=1,1,1while iif a[i]>=a[i-1]: c+=1 m=max(m,c)else: c=1i+=1print(c,m)則程序執行后,c和m的值分別是( )A.1和5 B.1和4 C.2和5 D.2和49.已知部分選擇題的標準答案和學生提交的作答分別存儲于字符串變量“sa”和“st”,希望得到一個由布爾型常量組成的列表“result”作為系統批改的結果(答對為“True”,否則為“False”)。下列算法設計選項不正確的是( )A.result=[False] len(sa)for i in range(len(sa)):if st[i]==sa[i]: result[i]=TrueB.result=[]for i in range(len(sa)):result.append(sa[i]==st[i])C.result=[]for i in range(len(sa)):if st[i]==sa[i]: result.append(True)else: result.append(False)D.result=[]for i in range(len(sa)):tmp=Falseif st[i]!=sa[i]: tmp=Trueresult.append(tmp)10.有Python程序代碼如下:list1 = [] ; i = 1while i < 21:i += 1if i%5 != 0: continuelist1.append(i)print(list1)該程序段執行后,列表list1中輸出的內容是( )A.[1,2,3,4]B.[1,6,11,16]C.[5,10,15,20]D.[1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19]11.有如下Python程序段:a=[5,3,8,9,7,3,11]n=len(a)-1cnt=0for i in range(1,n):if a[i]==a[i+1]-a[i-1]: cnt+=1elif a[i]>a[i+1]-a[i-1]: cnt+=2else: cnt+=3print(cnt)執行該程序段后,變量cnt的值為( )A.9 B.10 C.11 D.1212.某算法流程圖如圖所示,其對應的Python程序是 ( )A.s=0for i in range(1,101):if i%5==0: s=s+ielse: i=i+2print(s)B.s=0;i=1while i<=100:if i%5==0; s=s+ielse: i=i+2print(s)C.s=0for i in range(1,101):if i%5==0: s=s+ii=i+2print(s)D.s=0;i=1while i<=100:if i%5=0; s=s+ii=i+2print(s)13.有如下的Python程序段:n = int(input())st =″ ″for i in range(1,n+1): for j in range(1,i+1,2): st +=″ ″ print(st)該程序運行時,輸入5后,輸出的內容為( )14.某Python程序如下:while a!=b:if a>b: a=a-belse: b=b//2print(b)若a,b的值分別為22和16,程序運行后輸出的結果是( )A.0 B.1 C.2 D.1615.誰是小偷:有a,b,c,d四名犯罪嫌疑人,其中只有一人是小偷,經過審訊獲得的消息如下:①a說我不是小偷;②b說c是小偷;③c說小偷肯定是d;④d說c胡說!其中有三個人說的是實話,一個人說的是假話,現編寫了一個Python程序用于推斷誰是小偷,代碼如下:for thief in['a','b','c','d']:① if thief!='a': sum+=1if thief=='c': sum+=1if thief=='d': sum+=1if② sum+=1if③ print(″小偷是″,thief)請回答下列問題:(1)根據以上四人的描述,真正的小偷是 。 (2)請在劃線處填入正確的代碼。優化集訓9 循環結構的程序實現1.C 解析 首先,需要注意range(1,10,3)參數的邊界。由于循環變量i的取值小于10,所以變量i取值為1、4、7,語句x+=i功能是累加變量i,所以循環體的功能是x=1+4+7,結果是12,答案選C。2.B 解析 本題考核的是while循環語句的理解,重點觀察循環體及循環條件,觀察循環變量n的取值情況,當輸入n的值是4時,n:4、3、2,此時n>1循環條件成立。當n的值為1時結束循環。所以fac=1 4 3 2,fac最終值為24,答案選B。3.D 解析 本題重點是理解循環區間邊界以及步長step的變化,對步長step而言:①step>0循環區間是[start,end),且start②step<0循環區間是[start,end),且start>end時執行循環體。結合循環條件的理解,本題為10,1,-2或10,0,-2,答案選D。4.A 解析 break屬于循環控制語句,break直接跳出整個循環,continue則僅僅跳過本次循環。break語句將直接從循環體中跳出,另外break語句也常用于for循環。本題中當循環變量i值等于5時條件成立,直接結束整個循環語句。而循環變量i值為1~4時,執行語句list1.append(i),因此答案選A。5.A 解析 本題考查隨機數及算法的綜合應用能力。隨機數n的值域為[50,101],外循環遍歷了n所有可能的因子,當找到n的因子,將因子連接到列表a中,同時分解n,不斷分解直至不能整除,則進入大循環取下一個因子。因此本題在對隨機數n進行質因分解,A選項3 3 3 3=81,數據在[50,101]范圍內,有可能;B選項的9可以被分解為3 3,且2 2 9=36,數據不在[50,101]范圍內,B錯誤,同理C,D都未完全分解,錯誤。6.A7.B 解析 本題考查程序的閱讀理解能力。變量c,記錄的是列表a從下標2開始,滿足每個數等于前兩數之和的個數。觀察列表a現有元素,c=3。8.C 解析 本題求最長連續升序子序列的長度。其中變量c用于統計連續非降序子序列的長度,變量m用于記錄最大連續非降序子序列長度。其中條件a[i]>=a[i-1]成立,說明是非降序子序列,計數變量c執行加1操作,最大值標記變量m通過取原m與c的最大值進行更新;若條件不成立,計數變量c重置為1。在列表a中,非降序子序列分別為[3,4][2,5,6,7,7][1,2],所以m的最大值為5,在程序執行完畢,變量c為最后一個非降序子序列的長度,所以c的值2。9.D 解析 根據題目要求,批改的結果答對為“True”,答錯為“False”,而D選項對tmp的賦值為答錯為“True”,答對為“False”,因此算法設計錯誤。10.C 解析 continue屬于循環控制語句,continue語句跳出本次循環,而break跳出整個循環。continue語句將跳過當前循環(continue語句后面剩余語句不執行),而是繼續進行下一輪循環。另外continue語句也常用于for循環。本題中當循環變量i是5的整數倍時,才會執行語句list1.append(i),其余情況均執行continue語句。因此答案選C。11.B 解析 本題考查循環語句及數組的應用。本題可使用列表法,記錄變量的值(表略),故選B。12.D 解析 本題考查算法的表式方法、算法的程序實現。流程圖中,i的初值為1,s的初值為0,A,C選項中均沒有給變量i賦初值,故錯誤;while循環中,條件判斷語句“i%5==0 ”為True時,執行“s=s+i”語句,為False時,不處理,故B選項錯誤,D選項正確。13.C 解析 本題考查for循環語句的嵌套及綜合分析能力。外循環i控制行數,共5行;內循環st存儲' '的個數,每次輸出之后不清空,因此下次循環加上次的' '的個數,故第一行1個' ',第二行2個' ',第三行4個' ',依次類推……所以本題選C。14.C 解析 本題考查Python循環相關知識。列出表格如下:循環次數 0 1 2 3 4 5a 22 6 6 6 2 2b 16 16 8 4 4 2綜上所述,b=2。15.(1)c (2)①sum=0 ②thief!=″d″ ③sum==3解析 本題考查字符串知識和枚舉算法。(1)根據邏輯推理可知c是小偷。(2)①變量sum初始化;②此處利用枚舉法依次將小偷分別假設為四人,將d的話轉換為相應的代碼,即thief!=″d″。③sum代表說真話的數量,此處有三人說真話,故sum==3。21世紀教育網 www.21cnjy.com 精品試卷·第 2 頁 (共 2 頁)21世紀教育網(www.21cnjy.com) 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫