浙教版(2019)選擇性必修1《第三章 字符串、隊列和?!?022年單元測試卷
發(fā)布:2024/12/5 20:30:2
一.選擇題(共27小題)
-
1.有如下 python 程序段:
from random import*
s=''
for i in range(1,4):
k=int(random( ?。?3+1)
c=chr(96+k)
if i%2==k%2:
s=s+c
else:
s=c+s
print(s)
若該段程序執(zhí)行以后,s 的值不可能的是( )A.'abc' B.'bbc' C.'aab' D.'caa' 組卷:1引用:3難度:0.5 -
2.有如下python程序段:(注:字母ASCII碼>數(shù)字ASCII碼,小寫字母ASCII碼>大寫字母ASCII碼)
import random
s=“olympicGames2021“;ans=““;i=0
while i<len(s)-2:
t=int(jye.ai.jye.ai( ?。?2)+1
x=s[i];y=s[i+t]
if x>y:
ans+=x
else:
ans+=y
i=i+t+1
print(ans)
執(zhí)行程序后,輸出結(jié)果可能為( )A.oyies B.ymcms2 C.oypcms2 D.ypces1 組卷:1引用:2難度:0.4 -
3.有如下Python程序段:
s=“ABCDEF“
ch=““
for i in range(0,len(s)):
a=int(input( ?。籦=(a+2)%6
ch=ch+chr(ord(s[b])+32)
print(ch)
運行程序后,依次輸入3、1、4、5、2、6,輸出ch的值是( ?。?/h2>A.cadebf B.fdabec C.a(chǎn)abbab D.ecfadb 組卷:2引用:3難度:0.6 -
4.有如下Python程序段:
s=input(“請輸入一串字符串:”)
m=cnt=1
for i in range(1,len(s)):
if s[i]>s[i-1]:
cnt+=1
if cnt>m:
m=cnt
else:
cnt=1
print(m)
該程序段的功能是( ?。?/h2>A.輸出字符串s中最大的字符的索引 B.輸出字符串s中最大的字符 C.輸出字符串s中最長的遞增序列 D.輸出字符串s中最長的遞增序列長度 組卷:14引用:5難度:0.5 -
5.有如下Python程序段:
s=input(“請輸入一串字符串:”)
f=True
for i in range(0,len(s)//2):
if s[i]!=s[len(s)-i-1]:
f=False
break
print(f)
若執(zhí)行該程序后,輸出的結(jié)果是“True”,那么輸入的值可能是( )A.onion B.hello C.278 D.111 組卷:15引用:4難度:0.5 -
6.一個棧的入棧序列為1,2,3,4,5,則其出棧序列不可能為( ?。?/h2>
A.1,2,3,4,5 B.4,5,3,2,1 C.4,3,5,1,2 D.3,2,1,5,4 組卷:15引用:2難度:0.5 -
7.一個棧的輸入序列為“12345“,輸出的第一個元素為“4“,則輸出的第3個元素不可能的是( ?。?/h2>
A.1 B.2 C.3 D.5 組卷:7引用:3難度:0.6 -
8.某Python程序如下:
s=“xyAB#Fk”;k=x=“”;flag=True
for i in range(len(s)):
If“a”<=s[i]<=“z”and flag:
x=chr(((ord(s[i])-95))%26+97)#字符“a”的ASCⅡ碼值為97
elif“A”<=s[i]<=“Z”and flag:
x=chr>(((Cord(s[i])-41))%26+65)#字符“A”的 ASCⅡ碼值為65
flag=False
else:
x=s[i];flag=True
k=k+x
print(k)
執(zhí)行該程序后,輸出值為( )A.ZAyb#dK B.yzYZ#Dm C.zaYB#Dk D.zaYZ#Dm 組卷:10引用:4難度:0.4 -
9.創(chuàng)建一個容量為3的隊列,元素2,3,5,1,3,5,2依次等待入隊。入隊規(guī)則為:
①若當前待入隊元素已經(jīng)在隊列中,則跳過該元素,否則轉(zhuǎn)②
②若當前隊列已滿,將隊首元素出隊列,否則轉(zhuǎn)③
③將當前待入隊元素入隊列
操作完成后,隊列中的元素為( ?。?/h2>A.2,3,5,1 B.1,2,3,5 C.2,3,5 D.5,1,2 組卷:13引用:2難度:0.4 -
10.已知一個棧的入棧序列是a,c,e,h,r,t,e,其出棧序列可能的是( ?。?/h2>
A.c,h,c,a,t,e,r B.h,e,c,t,a,r,e C.t,e,a,c,h,e,r D.r,e,t,e,a,c,h 組卷:10引用:5難度:0.7
二.簡答題(共3小題)
-
29.為四則運算式“6+(8-2)*2÷3”轉(zhuǎn)逆波蘭表達“682-2*3÷+”設計算法,編程實現(xiàn)。
分析:在數(shù)學運算表達式中,運算符總是置于與之相關(guān)的兩個運算對象之間,在計算結(jié)果時,要考慮括號、運算符號的優(yōu)先性。為了程序?qū)崿F(xiàn)的方便,波蘭邏輯學家J.Lukasiewicz提出了另一種表示法,將運算符置于其運算對象之后,沒有括號,不用考慮運算符號的優(yōu)先性。這種表達式稱為后綴表達式,又叫逆波蘭表達式。
如表達式“682-2*3÷+”是四則運算式“6+(8-2)*2÷3”的逆波蘭表達式。為了處理方便,規(guī)定表達式中的數(shù)均為小于10的正整數(shù),運算符為+、-、*、÷。
(1)抽象建模
設計兩個棧bds、fh,棧bds用來存放表達式,棧fh用來暫時存放運算符。從左往右掃描四則運算式,遇到數(shù)字時,入棧bds;遇到運算符號時,根據(jù)運算符號的優(yōu)先級設計進棧與出棧。
四則運算式“6+(8-2)*2÷3”轉(zhuǎn)換規(guī)則的模擬過程如表所示:
結(jié)合表格的操作過程,用棧bds和棧fh記錄每個操作后的棧內(nèi)情況(見圖),那么在操作2中棧fh里有內(nèi)容為
(2)設計算法
基于問題的抽象與建模,解決該問題的主要算法描述如下:
從左往右遍歷四則運算式s(設中間變量為ch):
1)當ch是數(shù)字,直接入棧bds;
2)當ch是運算符:
a.若ch為左括號時,直接入棧fh;
b.若ch為右括號時,則將棧fh元素彈出,壓入棧bds,直到遇到左括號(左括號只
彈出,不壓入棧bds);
c.若ch為其它運算符時,如果運算符ch優(yōu)先級大于棧fh中棧頂元素的優(yōu)先級(或棧fh為空),直接入棧fh;否則,將棧fh元素依次彈出,并壓入棧bds,直到運算符ch優(yōu)先級大于棧fh中棧頂元素的優(yōu)先級(或棧fh為空);
3)將棧bds中元素依次出棧,即為該四則運算s的后綴表達式。
(3)編寫程序
實現(xiàn)上述功能的Python代碼如下,請在橫線處填入合適代碼。組卷:17引用:2難度:0.3 -
30.【加試題】要求將某一字符串中指定的字符改寫成小寫或大寫(如果原先是大寫就改成小寫,反之改成大寫),并將處理后的字符重新輸出.
程序界面如下圖所示,在Text1中輸入原始字符串,在Text2中輸入需要改變的字符,單擊“改變”按鈕后,在Text3中輸出處理后的結(jié)果.
程序代碼如下:
Private Sub Command1_Click ( )
Dim s As String,result As String,k As String
Dim zs As String,n As Integer
result=“”
s=Text1.Text
k=Text2.Text
For n=1To Len(s)
If zs=k Then
If Asc(zs)>=65And Asc(zs)<=90Then
zs=Chr(Asc(zs)+32)
Else lf Asc(zs)>=97And Asc(zs)<=122Then
zs=Chr(Asc(zs)-32)
End If
End If
Next n
End Sub
在程序①、②、③橫線處填入適當?shù)恼Z句或表達式,把程序補充完整.
(1)程序中①橫線處應填入
(2)程序中②橫線處應填入
(3)程序中③橫線處應填入組卷:27引用:3難度:0.1