浙教版(2019)選擇性必修1《第三章 字符串、隊(duì)列和?!?022年單元測(cè)試卷
發(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 的值不可能的是( ?。?/h2>組卷: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é)果可能為( ?。?/h2>組卷: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)
運(yùn)行程序后,依次輸入3、1、4、5、2、6,輸出ch的值是( ?。?/h2>組卷:2引用:3難度:0.6 -
4.有如下Python程序段:
s=input(“請(qǐng)輸入一串字符串:”)
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)
該程序段的功能是( )組卷:14引用:5難度:0.5 -
5.有如下Python程序段:
s=input(“請(qǐng)輸入一串字符串:”)
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”,那么輸入的值可能是( )組卷:15引用:4難度:0.5 -
6.一個(gè)棧的入棧序列為1,2,3,4,5,則其出棧序列不可能為( ?。?/h2>
組卷:15引用:2難度:0.5 -
7.一個(gè)棧的輸入序列為“12345“,輸出的第一個(gè)元素為“4“,則輸出的第3個(gè)元素不可能的是( )
組卷: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í)行該程序后,輸出值為( )組卷:10引用:4難度:0.4 -
9.創(chuàng)建一個(gè)容量為3的隊(duì)列,元素2,3,5,1,3,5,2依次等待入隊(duì)。入隊(duì)規(guī)則為:
①若當(dāng)前待入隊(duì)元素已經(jīng)在隊(duì)列中,則跳過該元素,否則轉(zhuǎn)②
②若當(dāng)前隊(duì)列已滿,將隊(duì)首元素出隊(duì)列,否則轉(zhuǎn)③
③將當(dāng)前待入隊(duì)元素入隊(duì)列
操作完成后,隊(duì)列中的元素為( ?。?/h2>組卷:13引用:2難度:0.4 -
10.已知一個(gè)棧的入棧序列是a,c,e,h,r,t,e,其出棧序列可能的是( ?。?/h2>
組卷:10引用:5難度:0.7
二.簡(jiǎn)答題(共3小題)
-
29.為四則運(yùn)算式“6+(8-2)*2÷3”轉(zhuǎn)逆波蘭表達(dá)“682-2*3÷+”設(shè)計(jì)算法,編程實(shí)現(xiàn)。
分析:在數(shù)學(xué)運(yùn)算表達(dá)式中,運(yùn)算符總是置于與之相關(guān)的兩個(gè)運(yùn)算對(duì)象之間,在計(jì)算結(jié)果時(shí),要考慮括號(hào)、運(yùn)算符號(hào)的優(yōu)先性。為了程序?qū)崿F(xiàn)的方便,波蘭邏輯學(xué)家J.Lukasiewicz提出了另一種表示法,將運(yùn)算符置于其運(yùn)算對(duì)象之后,沒有括號(hào),不用考慮運(yùn)算符號(hào)的優(yōu)先性。這種表達(dá)式稱為后綴表達(dá)式,又叫逆波蘭表達(dá)式。
如表達(dá)式“682-2*3÷+”是四則運(yùn)算式“6+(8-2)*2÷3”的逆波蘭表達(dá)式。為了處理方便,規(guī)定表達(dá)式中的數(shù)均為小于10的正整數(shù),運(yùn)算符為+、-、*、÷。
(1)抽象建模
設(shè)計(jì)兩個(gè)棧bds、fh,棧bds用來存放表達(dá)式,棧fh用來暫時(shí)存放運(yùn)算符。從左往右掃描四則運(yùn)算式,遇到數(shù)字時(shí),入棧bds;遇到運(yùn)算符號(hào)時(shí),根據(jù)運(yùn)算符號(hào)的優(yōu)先級(jí)設(shè)計(jì)進(jìn)棧與出棧。
四則運(yùn)算式“6+(8-2)*2÷3”轉(zhuǎn)換規(guī)則的模擬過程如表所示:
結(jié)合表格的操作過程,用棧bds和棧fh記錄每個(gè)操作后的棧內(nèi)情況(見圖),那么在操作2中棧fh里有內(nèi)容為
(2)設(shè)計(jì)算法
基于問題的抽象與建模,解決該問題的主要算法描述如下:
從左往右遍歷四則運(yùn)算式s(設(shè)中間變量為ch):
1)當(dāng)ch是數(shù)字,直接入棧bds;
2)當(dāng)ch是運(yùn)算符:
a.若ch為左括號(hào)時(shí),直接入棧fh;
b.若ch為右括號(hào)時(shí),則將棧fh元素彈出,壓入棧bds,直到遇到左括號(hào)(左括號(hào)只
彈出,不壓入棧bds);
c.若ch為其它運(yùn)算符時(shí),如果運(yùn)算符ch優(yōu)先級(jí)大于棧fh中棧頂元素的優(yōu)先級(jí)(或棧fh為空),直接入棧fh;否則,將棧fh元素依次彈出,并壓入棧bds,直到運(yùn)算符ch優(yōu)先級(jí)大于棧fh中棧頂元素的優(yōu)先級(jí)(或棧fh為空);
3)將棧bds中元素依次出棧,即為該四則運(yùn)算s的后綴表達(dá)式。
(3)編寫程序
實(shí)現(xiàn)上述功能的Python代碼如下,請(qǐng)?jiān)跈M線處填入合適代碼。組卷: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
在程序①、②、③橫線處填入適當(dāng)?shù)恼Z句或表達(dá)式,把程序補(bǔ)充完整.
(1)程序中①橫線處應(yīng)填入
(2)程序中②橫線處應(yīng)填入
(3)程序中③橫線處應(yīng)填入組卷:27引用:3難度:0.1