【正文】
考查Python程序的執(zhí)行。s=0,變量i的范圍是1~9,循環(huán)體是s=s+i,程序運行后s=s+i=0+1+2+3+4+5+6+7+8+9=45,故本題選B選項。15.B【詳解】本題考查的是Python表達式。%是求余,故(21%4)+3=1+3=4,選項B正確。解析:B【詳解】本題考查的是Python表達式。%是求余,故(21%4)+3=1+3=4,選項B正確。二、程序填空16. Python程序設(shè)計語言規(guī)定,在標識符中,字母大小寫是有區(qū)別的。該程序代碼中表示里程費的Tot2錯誤將字母“T”寫成了小寫”“t”。 合理的順序是:③分析問題①設(shè)計算法②編寫程序④調(diào)試運行程序 略 【詳解】本題主要考查Python程序的編寫。①Python程序設(shè)計語言屬于程序設(shè)計語言中的高級語言,選C選項。②“Tot2=8”是一個賦值語句,選C選項。③“初始化時長費為0”是一個注釋語句,選D選項。④“S<=”是一個表達式,選B選項。⑤“float(input(“請輸入時長”))”是一個函數(shù),float() 函數(shù)用于將整數(shù)和字符串轉(zhuǎn)換成浮點數(shù),選A選項。⑥編譯運行發(fā)現(xiàn)報錯了,根據(jù)下圖中所示的錯誤信息分析該程序報錯的原因是:Python程序設(shè)計語言規(guī)定,在標識符中,字母大小寫是有區(qū)別的。該程序代碼中表示里程費的Tot2錯誤將字母“T”寫成了小寫”“t”。⑦小C借助于計算機編寫程序解決問題的這個過程,合理的順序是:③分析問題①設(shè)計算法②編寫程序④調(diào)試運行程序。⑧略17.①i =(Len(s)\8)*8 ②a(start + c((i1)Mod 8+1)) ③ss = convert(Asc(b(i))) 【詳解】(1)“A”的ASCII碼值是65,用二進制表示為0100001,m=35,用二進制表示為0010001,位做異或運算,相同為0,相異為1,可得:01100010。(2)①以8個數(shù)據(jù)為一段進行分段處理,個數(shù)等于8的數(shù)據(jù)段需進行位置變換,故需進行位置變換的數(shù)據(jù)段有(Len(s)\8)個,數(shù)據(jù)個數(shù)為i =(Len(s)\8)*8。②位置變換方法:加密后數(shù)據(jù)段的第ⅰ個元素=原數(shù)據(jù)段的第c(i)個元素,其中i=1,2,……,8,i表示段內(nèi)位置。代碼“Do While i =(Len(s)\8)*8”中的i對應(yīng)段內(nèi)位置可為“1+(i1)Mod8”,start表示該數(shù)據(jù)段第一個數(shù)據(jù)的前個位置,故數(shù)組b第i位置元素是來自數(shù)組a第start + c(1+(i*1)Mod 8)位置,故②處代碼為“a(start + c(i1)Mod8+1))”。③位置變換后的數(shù)據(jù)需轉(zhuǎn)二進制,再按位做異或運算,故③處的代碼是調(diào)用自定義函數(shù)convert把b(i)中字符的ASCII碼轉(zhuǎn)二進制后存入變量ss,故此處代碼為“ss = convert(Asc(b(i))”。18.B C C C D 【詳解】本題主要考查二分查找算法及Python程序?qū)崿F(xiàn)。①二分查找的循環(huán)條件是left<=right,故選B選項。②此處是取中間值,需要整除2,故填(left+right)//2,故選C選項。③如果mid對應(yīng)的列表值是1000,表示已找到,則用break跳出循環(huán),選C選項。④如果mid對應(yīng)的列表值小于1000,則需要更新left的值為mid+1繼續(xù)循環(huán),選C選項。⑤否則更新right的值為mid1,選D選項。19.range(1,33) g+m+x==100 5*g+3*m+x/3 【詳解】本題考查的是算法中的經(jīng)典問題。百雞百錢問題是典型的枚舉算法解決,枚舉算法的關(guān)鍵就是找到問題解決的條件和枚舉范圍。20.解析法或解析 A 【詳解】本題主要考查Python程序的執(zhí)行與調(diào)試。①由算法分析可知,本題采用的算法是解析法或解析。②3公里內(nèi)(含3公里),收費8元;超過3公里但未超過6公里部分,;超過6公里部分,故此處填3s=6,故選A選項。21.計算每一項的階乘 記錄階乘相加后的和 t記錄的是每一項階乘的結(jié)果,t*=n即t=t*n,t初值為1,能計算出每項的階乘結(jié)果,若為0,則每項的階乘結(jié)果都是0,不符合題意。 t=t*n s=s+t 【詳解】本題考查的是python語言編程。本題考查的是120階乘的求和。本題的重點是要先計算出對應(yīng)的每一項階乘的結(jié)果t,然后20項階乘的結(jié)果記錄在s中。在此過程中既要考慮到累乘求階乘結(jié)果,又要考慮到累加求所有階乘的和。初值n=0,在121的循環(huán)過程中,記錄每一項的階乘,s=0記錄階乘累加的和,t=1記錄每一項階乘的結(jié)果。每求一次階乘就要進行一次求和,故語句t*=n,s+=t均在“for n in range(1,21):”的循環(huán)體內(nèi)。