資源簡介 3.3簡單算法及其程序實現一、選擇題1.以下程序段運行結果是( )s = 0for i in range(11):if i % 2==0:s = s + ielse:s = s - iprint(s)A.55 B.-5 C.5 D.-552.經過中國國家登山隊的測量,2020年12月8日,中尼兩國共同宣布了珠穆朗瑪峰的最新高度為海拔8848.86米?,F有一張白紙的厚度大約是0.08毫米,對折一次,厚度變0.16毫米,再對折一次,厚度變為0.32毫米,……,每對折一次,其厚度均變為對折前的兩倍,假設這張紙足夠大,可以對折任意次,那么這張紙至少對折多少次后,其厚度將超過珠穆朗瑪峰的高度?以下是求解以上問題的程序片段,請你補全代碼:請選擇適當的代碼填入程序①處。( )A.while B.for C.output D.input3.運行Python程序的過程中出現了如下圖錯誤提示,原因是()。A.變量名51study太長B.應該寫成"chinese" =51studyC.“chinese”應該寫成“china s”D.變量名51study不符合python語言規范,變量名不能以數字開頭4.下列與數學表達式對應的python表達式,正確的是( )。A.( - b + math. sqrt (b * b – 4 * a * c)) /a * aB.- b + math. sqrt (b * b – 4 * a * c) /2*aC.( -b + math. sqrt (b * 2 – 4 * a * c)) /(2 * a)D.( -b + math. sqrt ( b * b – 4 * a * c)) / (2 * a)5.在編寫python程序時縮進的作用是()。A.讓程序更美觀 B.只在for循環中使用C.只在if語句中使用 D.用來界定代碼塊6.計算機在執行高級語言程序時,逐條語句翻譯成機器語言并立即執行的程序是( )A.解釋程序 B.編譯程序 C.高級程序 D.匯編程序7.已知有這樣一種對冒泡排序的優化方法:在每一遍“加工”過程中,記錄在這遍“加工”中是否進行過數據交換。若在一遍“加工”過程中沒有進行過數據交換,則數據已經有序,可以直接退出循環結束排序。則下列說法錯誤的是 ( )A.對有n個數據的數組進行優化后的冒泡排序,最小比較次數為n-1。B.對有n個數據的數組進行冒泡排序,無論是否優化,最大比較次數相同。C.對冒泡排序算法進行優化,能夠較大提高其效率,符合算法設計的一般原則。D.若待排序數組中的數據依次為23,17,46,58,34,11,對其使用優化后的冒泡排序進行升序排序,比較次數為9。8.某對分查找算法的VB程序段如下:i=1:j=7f=Falsekey=Val(Text1. Text)Do While i<=j And Not fm=(i+j)\2If a(m)=key Then f=TrueIf a(m)>key Then i=m-1 Else i=m+1LoopList1. AddItem Str(i)+Str(j)+Str(m)數組元素a(1)到a(7)的值依次為"23,42,58,66,77,83,98",運行上述程序段后,列表框List1中顯示的結果為"5 4 5",則文本框Text1中輸入值的范圍是( )A.[66,77] B.[66,77) C.(66,77] D.(66,77)9.下列賦值語句正確的是( )A.x+1=x B.x=x+1 C.x=+1 D.x,y,z=1,210.(必修)下列說法中,正確的是( )。A.程序設計語言中的匯編語言包含C語言B.機器語言不是程序設計語言C.程序實際上是一組操作的指令或語句的序列,是計算機執行算法的操作步驟D.程序設計和程序設計語言是同一概念11.下列程序運行后,在鍵盤輸入100,則程序的運行結果是( )。 x=input("Please input x:")if x<0 or x>=20: print(x//10) elif 0<=x<5: print(x) elif 5<=x<10: print(3*x-5) elif 10<=x<20: print(0.5*x-2)A.10 B.100 C.295 D.4812.下面if語句統計滿足“性別 (gender) 為男、職稱(rank) 為副教授、年齡(age)小于40歲”條件的人數,正確的語句為( )。A.if(gender=="男" or age<40 and rank=="副教授"): n+=1B.if(gender=="男" and age<40 and rank=="副教授"): n+=1C.if(gender=="男" and age<40 or rank=="副教授"): n+=1D.if(gender=="男" or age<40 or rank=="副教授"): n+=113.程序如下a=int(input())b=int(input ())c=a+bprint(a,’+’,b,’=’,c)通過鍵盤分別輸入23和3,運算結果是( )A.26B.23+3=26C.’23’+”3”=26D.24+4=2814.城市出租車按里程收費,小明繪制了收費價格程序的流程圖,如下所示,要測試所有程序分支是否正確,以下測試數據中,最恰當的一組是( )A.2,10,12 B.10,2,6 C.-1,6,10 D.3,11,10015.下面說法正確的是( )A.算法+數據結構=程序 B.算法就是程序C.數據結構就是程序 D.算法包括數據結構16.某算法的部分流程圖如圖所示。執行這部分流程,輸入變量n的值為5,則下列說法正確的是( )A.語句“c<=n?”共執行了4次 B.循環結束后,變量a的值為3C.循環結束后,變量b的值為5 D.循環結束后,程序輸出的值為617.某算法的部分流程圖如圖所示,執行這部分流程后,輸出s的值為64,則①處應填入( )A.i \ 4 = 2B.Sqr(i) = Int(Sqr(i))C.i Mod 2 = 1D.i Mod 2 = 018.有如下 VB 程序段Dim conn As New ADODB.ConnectionDim rs As New ADODB.Recordsetconn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & App.Path & “\詞庫.accdb”conn.OpenSet rs.ActiveConnection = connrs.Open “SELECT * FROM words”n = 0Do While Not rs.EOFn = n + 1en(n) = rs.Fields(1)ch(n) = rs.Fields(2)rs.MoveNextLooprs.Closeconn.Close下列說法中正確的是( )①連接的數據庫文件名是“\詞庫.accdb” ②程序運行后,變量n 的值表示該數據表中記錄的總數 ③數組 en(n)所存儲的是數據表第 2 個字段的字段值 ④“ConnectionString”是 conn 對象的屬性值⑤查詢的數據表名稱是“words” ⑥省略語句“rs.MoveNext”,程序也可以正常運行A.①④⑤ B.③④⑥ C.②③⑤ D.②③④19.某算法的流程圖如圖所示。執行這部分流程,輸入41,則輸出的值是( )A.0 B.19 C.22 D.3220.下列選項中,屬于計算機程序設計語言的是( )A.匯編語言 B.高級語言 C.自然語言 D.機器語言二、簡答題21.編寫一個程序,它將找到所有這些數字,可被7整除,但不是5的倍數,2000年至3200年(包括在內)。得到的數字應按逗號分隔的順序打印在一行上。提示:考慮使用range(#begin,#end)22.利用for循環,分別計算1--100中奇數的和、偶數的和。sum1=0sum2=0for i in range(1,100):if i%2==0:sum1+=ielse:sum2+=iprint(sum1,sum2)三、操作題23.小球從5米高度自由落下,每次落地后反彈回原高度的一半,再落下。求它在第10次落地時,共經過多少米?程序代碼如下:h=5s =5for i in range(2,11):#第1次已經計算在內,從第2次開始計算s = ______________h = h/2print(s)請補全程序:__________24.猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個:第二天早上將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半多一個,到第10天早上想再吃時,只剩下一個桃子了。問第一天共摘了多少桃子?(算法分析)逆向思維:猴子原有一個桃子,先借來一個桃子,覺得不夠又借來了與手上等量的桃子。一共借了9天。根據以上算法分析,補全以下程序代碼:peach = 1for i in range(9):peach= (__________)*2print (peach)請補全程序:___________________25.閱讀下列程序,寫出運行結果。n= int(input("n="))cnt = 0while n > 1:cnt = cnt + 1if n % 2 == 0:n = n / 2else:n = 3 * n + 1print(cnt)程序運行后,輸入:8運行結果是:_____________26.閱讀下列程序,寫出運行結果。x = int(input("請輸入一個整數:")for i in range(1,x):if x % i == 0:print(i,end=" ")#end=" "表示輸出當前行的所有內容后輸出一個空格,且不換行程序運行后,輸入:8運行輸出結果是:_____________27.某裝修公司承接了一項裝修任務,其中一墻面的裝飾條需要相同花紋200組,花紋由特殊環保材料拼接而成,每組花紋由三個三角形組成。三個三角形邊長分別為a1、bl、c1,a2、b2、c2,a3、b3、c3,從節約用材降低成本的角度考慮,該公司至少需要多大面積的特殊材料?Python自定義函數的語法def函數名(參數列表)函數體return返回值注:參數列表是程序調用該函數時傳遞給它的值,可以有0個、1個或多個參數,當傳遞多個參數時,各參數之間用逗號分隔。函數可以沒有 return語句。函數定義完成后,程序可以根據需要調用函數。程序部分代碼如下:def ______________:p=(x+y+z)/2s= (p * (p-x) * (p-y) * (p-z)) ** 0.5return stotal = 200 * (Area (al,b1,c1) + Area (a2,b2,c2) + Area(a3,b3,c3))請補全程序:________________28.編程實現一個“猜數游戲”。要求:由計算機隨機生成一個100以內的正整數,用戶有5次猜數機會,如果猜中提示“恭喜你,猜對了!”:否則,提示“偏大”或“偏小”,然后繼續猜數。如果5次都未猜中,計算機公布答案,并提示“5次都沒有猜中,游戲結束!”補全以下程序代碼:import randomnum = random. randint(1,100)flag Truen = 5flag = Truewhile _____________:guess = int(input("請輸入猜測的數:"))if guess < num:print("偏小")n = n - 1elif guess > numprint("偏大")n = n - 1else:print("恭喜你,猜對了!")flag = Falseberak #跳出當前循環,執行循環后的語句if flag:print("答案是:"+str(num)+" 5次都沒有猜中,游戲結束!")請補全程序___________________29.閱讀下列程序,寫出運行結果n= int(input("n="))s=0while n>0:x = n % 10s = s + xn = n //10print(s)程序運行時,輸入685:______30.某快遞公司為計算快遞運費編寫了Python程序,當用戶輸入快遞重量(單位是千克)后,根據快遞公司的收費標準,計算出快遞運費??爝f公司的具體收費標準如下表所示:某快遞公司收費標準表快遞重量(千克) 快遞運費1千克以下(包含1千克) 9元1千克以上3千克以下(包含3千克) 11元3千克以上5千克以下(包含5千克) 14元5千克以上 超過5千克部分,每千克加收2元,不足1千克按1千克計算該Python程序代碼如下所示,請完善程序實現計算快遞運費的功能。#計算快遞運費import mathweight= float(input"請輸入快遞重量(kg):"))#輸入的值須大于零if weight<=l:money=9elif_______:money=11elif _______:money=14else:money=14+math.ceil(weight-5)print("你需支付的快遞運費是:",money,"元")(1)程序第3行中float函數的功能是_________。(2)程序中第6行下劃線處應填入__________。(3)程序中第8行下劃線處應填入___________。31.編寫一個程序,判定用戶輸入的兩個數 a和 b,如果用戶輸入的第一個數大,則兩數互換,否則原樣輸出。32.以下是計算s = 1+6+11+...+ 101的程序代碼,請補全程序。s=0for i in range(1,102, ):s= print( s)請補充完成上述程序①_________ ②_________四、判斷題33.下列程序段中,賦值語句s=s+i被重復執行了4次。s=0For i in range(3,10,2):s=s+i (_____)34.編程也屬于編碼,是運用程序設計語言實現人機交互提高計算機應用效率,為實現操作程序化要求所進行的編碼。(_____)35.用自然語言來描述算法,比用流程圖來描述算法更清晰、簡潔。(_______)五、填空題36.閱讀下列程序,寫出運行結果a,b = 1,1n = int(input("請輸入一個大于等于3的正整數n:"))for i in range(n-2):c = a + ba = bb = cprint(c)程序運行后,輸入:6運行輸出結果是:___________37.閱讀下列程序,寫出運行結果。m = int(input("請輸入一個正整數:"))x = my = mfor i in range (9):n = int(input("請輸入一個正整數:"))if n運行結果是:_____________38.閱讀下列程序,寫出運行結果i = 0sum = 0t = 1while sum < 10:i = i+ 1t=t*isum = sum + tprint(sum)運行輸出結果是:_______________39.閱讀下列程序,寫出運行結果。m = 9n = 6c= m - nwhile c! = n:m = nn = cif m < n:m , n= n, mc = m - nprint(c)運行結果是:_________40.閱讀下列程序,寫出運行結果s = 1for i in range(1,10,3):s = s *iprint(s)運行輸出結果是:__________________41.下面的程序段運行后的結果為__________s=0for i in range(1,8,3):s=s+iprint(s)42.s=int(input(“請輸入一個兩位數:”))s=s//6print(s)程序運行后,鍵盤輸入31,其輸出結果為 ____________43.程序中的變量是計算過程中要用的數據的 。參考答案1.C【詳解】本題考查的是Python循環及選擇語句。range(11)是生成[0,1,2,3,4,5,6,7,8,9,10]的列表,結合if語句可知,當i為偶數用加,為奇數時則用減。故s=0-1+2-3+4-5+6-7+8-9+10=5。故本題應選C。2.A【詳解】本題考查的是Python的while循環。while語句格式:當表達式的值為真時,執行循環體語句;當表達式值為假時,退出循環,執行循環體外的下一條語句(即while后面沒有縮進的第一條語句)。當高度h小于珠穆朗瑪峰的高度height,則繼續對折,故本題應選A。3.D【詳解】本題考查的是程序調試。報錯內容是“語法錯誤:無效語法”,變量名51study,數字不能作為變量名的開頭,故D項正確。4.D【詳解】本題考查的是Python表達式。sqrt()求平方根,乘法運算符為“*”,除法為“/”,嵌套函數均使用小括號。表示為( -b + math. sqrt ( b * b – 4 * a * c)) / (2 * a)。5.D【詳解】本題考查的是Python語句格式。在編寫python程序時,縮進可以使得代碼非常整齊規范,賞心悅目,提高可讀性,因此作用是用來界定代碼塊。故本題應選D。6.A【詳解】本題主要考查程序執行。解釋程序的一般結構可以分為解釋模塊和運行模塊兩個主要模塊。前者的職能是按源程序動態執行順序逐個輸入語句,并對單個語句進行分析和解釋,包括語法和語義的正確性檢驗、生成等價的中間代碼或機器語言代碼,以及錯誤信息提供等處理。后者的職能是運行語句的翻譯代碼,并輸出中間結果或最終結果,故本題選A選項。7.D【詳解】本題考查對冒泡排序的理解。根據題干描述,對于數據23,17,46,58,34,11,進行7次比較即可確定排序順序。故選項D符合題意。8.D【詳解】本題考查對分查找算法。題目中要求文本框Text1中輸入值后,列表框List1中顯示的結果為“5 4 5”,在key值沒有給定的情況下,可以利用二叉樹來解決問題,二叉樹如下圖所示:由圖可知key值應該是大于66小于77的數,如果包括66,列表框List1中顯示的結果為“59.B【詳解】本題主要考查賦值語句知識點。賦值是把右邊的內容賦值到左邊,A選項x是不能賦值給左邊表達式,C選項正確寫法x+=1同x=x+1。D選項三個變量在賦值時少賦了一個值,故本題選B選項。10.C【詳解】本題主要考查程序設計知識點。C語言是高級語言,不屬于匯編語言,選項A說法錯誤;機器語言是程序設計語言,選項B說法錯誤;程序實際上是一組操作的指令或語句的序列,是計算機執行算法的操作步驟,故本題選C選項;程序設計和程序設計語言不是同一概念,選項D說法錯誤。11.A【詳解】本題主要考查多分支條件結構。因為x=100大于20,所以執行x//10=100//10=10,故程序的運行結果是10,故本題選A選項。12.B【詳解】本題主要考查if條件分支。題目中的條件都是與的關系,所以要用and連接,故本題選B選項。13.B【詳解】本題考查Python程序執行a=23,b=3,c=23+3=26,最后輸出23+3=26,故本題選B選項14.A【詳解】本題考查流程圖相關知識。要測試所有程序分支是否正確,則需要將所有分支都判斷一遍。測試的三組數據應該是小于等于3,大于3并且小于等于10以及大于10。故本題最恰當的一組數據是選項A的數據。故本題選A。15.A【詳解】本題考查的是程序。程序就是遵循一定規則完成指定工作的代碼。程序=算法+數據結構故選項A正確。16.D【詳解】本題考查流程圖。a 1 1 2 3 5b 1 2 3 5 8c 1 2 3 5 8i 2 3 4 5 6故說法正確的是選項D。17.D【詳解】本題考查流程圖。可以代入選項,當選項D代入時,流程如下。i 0 1 2 3 4 5 6 7 8 9 10 11s 2 2 4 4 8 8 16 16 32 32 64 64故本題選D。18.C【詳解】本題考查程序連接數據庫相關知識。連接的數據庫文件名是詞庫.accdb,①錯“ConnectionString”是conn對象的屬性名,④錯。省略語句“rs.MoveNext”,數據庫指針無法移動,循環無法結束,⑥錯。②③⑤的說法正確,故本題選C。19.B【詳解】x 41 20 10 5 2 1 0s 1 -1 -5 3 -13 19k 2 4 8 16 32 64最后可得s值19,故本題選B。20.ABD【詳解】本題考查的是計算機程序語言。計算機程序設計語言可以分為:機器語言、匯編語言、高級語言。故本題應選ABD。【點睛】21.l=[]for i in range(2000,3201):if (i%7==0)and (i%5!=0):l.append(str(i))print (','.join(1))【詳解】本題考查的編寫程序。程序的編寫難度較大,使用range( ?。┒xi的取值范圍,然后利用if判斷語句可被7整除,但不是5的倍數,最后利用join函數打印出結果即可。22.代碼解析注釋如下:sum1=0#定義sum1存儲偶數和,并賦值sum1=0sum2=0#定義sum2存儲偶數和,并賦值sum2=0for i in range(1,100):#通過遍歷1至100的所有整數,分別計算1至100中的偶數和、奇數和if i%2==0:#若i是偶數,則把偶數加到sum1中sum1+=ielse:#若i是奇數,則把奇數加到sum2中sum2+=iprint(sum1,sum2)#輸出結果,偶數和sum1的值為2550,奇數和sum2的值為2500【詳解】本題主要考查Python的循環結構和判斷結構。程序算法用自然語言可以表示為:定義兩個變量并賦值sum1,sum2;遍歷1-100的所以整數:如果遍歷的數為偶數,則將該偶數添累加到sum1中,如果遍歷的數為奇數,則將該奇數累加到sum2中;遍歷完成之后,最后輸出1--100偶數的和sum1,1--100中奇數的和sum2。23.s+h【詳解】本題考查的是Python循環語句。每次落地后反彈回原高度的一半,再落下,即從上一次落地開始到下一次落地經過的路程剛好是上一次的高度h,共經的路程為:前面經過的路程+本次經過的路程。故橫線上代碼應為:s+h。24.peach+1【詳解】本題考查的是Python循環語句。由逆向思維:先借來一個桃子,覺得不夠又借來了與手上等量的桃子??芍獧M線上的代碼應為:peach+125.3【詳解】本題考查的是Python循環及選擇語句。輸入n=8后:n>1成立,cnt=cnt+1=1,n%2==0成立,執行n=n/2=4;n>1成立,cnt=cnt+1=2,n%2==0成立,執行n=n/2=2;n>1成立,cnt=cnt+1=3,n%2==0成立,執行n=n/2=1;n>1不成立,輸出cnt值為3。26.1 2 4【詳解】本題考查的是Python循環語句。 range(1,x)是生成[1,x)的整數列表,x % i == 0是判斷x是否能被i整除。輸入8,8能被1、2、4整除。故運行輸出結果是1 2 4。27.Area(x,y,z)【詳解】本題考查的是Python自定義函數。def后面跟著是函數名,由Area (al,b1,c1)可知函數名為Area ,帶有3個參數;由p=(x+y+z)/2可知自定義函數的三個參數名稱為:x,y,z。故橫線上的代碼為:Area(x,y,z)。28.n>=1或n>0【詳解】本題考查的是Python循環語句。最多猜測5次,閱讀程序,可知n初始值為5,每猜一次減1,故循環的條件為:n>=1或n>0。29.19【詳解】本題考查的是Python循環語句。輸入685,初始值:n=685,s=0。n>0成立,x=n%10=5,s=s+x=5,n=n//10=68。n>0成立,x=n%10=8,s=s+x=13,n=n//10=6。n>0成立,x=n%10=6,s=s+x=19,n=n//10=0。n>0不成立,輸出s值為19。30.將輸入的快遞重量轉換為浮點型。 weight<=3 weight<=5【詳解】本題考查的是Python的選擇語句。(1)float()函數用于將整數和字符串轉換成浮點數。(2)由money=11可知,第6行下劃線處應填入weight<=3。(3)由money=14可知,第6行下劃線處應填入weight<=5。31.a=int(input(" 請輸入數 a:"))b=int(input(" 請輸入數 b:"))if a>b:t=aa=bb=tprint("用戶輸入的數按小到大排序結果是: ", a, b)else :print("原樣輸出 ",a,b)【詳解】本題主要考查Python程序設計。使用input函數接收兩個數a和b,用if條件分支結構判斷a和b的大小,如果a大于b,則交換,否則原樣輸出,具體代碼如下:a=int(input(" 請輸入數 a:"))b=int(input(" 請輸入數 b:"))if a>b:t=aa=bb=tprint("用戶輸入的數按小到大排序結果是: ", a, b)else :print("原樣輸出 ",a,b)32.5 s+i【詳解】本題主要考查Python循環結構。題目要求計算1、6、11.. 101等差數列之和,其中公差為5,因此①為5;s變量用于記錄等差數列之和,需進行累加計算,因此②為s+i。【點睛】33.正確【詳解】本題考查的是Python的range函數。range(start, stop [,step]) ;start 指的是計數起始值,默認是 0;stop 指的是計數結束值,但不包括 stop ;step 是步長,默認為 1,不可以為 0 。range() 方法生成一段左閉右開的整數范圍。range(3,10,2)生成的列表為[3,5,7,9],故題干中的說法正確。34.正確【詳解】本題主要考查程序編寫。編程也屬于編碼,是運用程序設計語言實現人機交互提高計算機應用效率,為實現操作程序化要求所進行的編碼,表述正確。35.錯【詳解】本題考查的是算法描述。流程圖是一種傳統的算法表示法,它用一些圖框來代表各種不同性質的操作,用流程線來指示算法的執行方向。由于它直觀形象,易于理解,所以應用廣泛,特別是在語言發展的早期階段,只有通過流程圖才能簡明地表述算法。故題干中的說法是錯誤的。36.8【詳解】本題考查的是Python循環語句。輸入6,初始值a=1,b=1,n=6。range(4)生成0到3的整數列表。當i=0,c=a+b=2,a=b=1,b=c=2。當i=1,c=a+b=3,a=b=2,b=c=3。當i=2,c=a+b=5,a=b=3,b=c=5。當i=3,c=a+b=8,a=b=5,b=c=8。輸出c值為837.9 9【詳解】本題考查的是Python循環及選擇語句。由if語句可知x和y存儲的是最小的數。故程序運行后,依次輸入:12 35 9 11 23 88 13 19 29 55,最小值是9,最后輸出的是9 9。38.33【詳解】本題考查的是Python循環語句。閱讀程序可知,計算的是:sum=1+1*2+1*2*3+……,當sum值大于等于10時停止。sum值為:1,3,,9,33……。故運行結果為33。39.【詳解】本題考查的是Python循環及選擇語句。初始值m=9,n=6,c=m-n=3。3!=6成立,m=n=6,n=c=3,6<3不成立,c=m-n=3。3!=3不成立,輸出c的值為3。40.28【詳解】本題考查的是Python循環語句及range函數。range()函數格式:range(起始值,結束值,步長)。注意:結束值不包含;步長可省略,默認為1。range(1,10,3)生成的是列表[1,4,7]。故s=1*1*4*7=28。41.12【詳解】本題考查的知識點是Python的循環函數。range()函數可創建一個整數列表,一般用在 for 循環中。range(1,8,3)等同于整數列表[1,4,7],故該程序結果為=0+1+4+7=12。42.5【詳解】本題主要考查程序的運行。s=31,s=s//6=31//6=5(“//”表示取整),故輸出結果為5。43.存儲單元【詳解】本題主要考查程序的變量。程序中的變量是計算過程中要用的數據的存儲單元。 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫