試卷征集
          加入會員
          操作視頻
          當前位置: 試卷中心 > 試卷詳情

          浙教版(2019)選擇性必修1《第三章 字符串、隊列和棧》2022年單元測試卷

          發布: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)
            若該段程序執行以后,s 的值不可能的是(  )

            組卷:1引用:3難度:0.5
          • 2.有如下python程序段:(注:字母ASCII碼>數字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)
            執行程序后,輸出結果可能為(  )

            組卷:1引用:2難度:0.4
          • 3.有如下Python程序段:
            s=“ABCDEF“
            ch=““
            for i in range(0,len(s)):
            a=int(input(  ));b=(a+2)%6
            ch=ch+chr(ord(s[b])+32)
            print(ch)
            運行程序后,依次輸入3、1、4、5、2、6,輸出ch的值是(  )

            組卷: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)
            該程序段的功能是(  )

            組卷: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)
            若執行該程序后,輸出的結果是“True”,那么輸入的值可能是(  )

            組卷:15引用:4難度:0.5
          • 6.一個棧的入棧序列為1,2,3,4,5,則其出棧序列不可能為(  )

            組卷:15引用:2難度:0.5
          • 7.一個棧的輸入序列為“12345“,輸出的第一個元素為“4“,則輸出的第3個元素不可能的是(  )

            組卷: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)
            執行該程序后,輸出值為(  )

            組卷:10引用:4難度:0.4
          • 9.創建一個容量為3的隊列,元素2,3,5,1,3,5,2依次等待入隊。入隊規則為:
            ①若當前待入隊元素已經在隊列中,則跳過該元素,否則轉②
            ②若當前隊列已滿,將隊首元素出隊列,否則轉③
            ③將當前待入隊元素入隊列
            操作完成后,隊列中的元素為(  )

            組卷:14引用:3難度:0.4
          • 10.已知一個棧的入棧序列是a,c,e,h,r,t,e,其出棧序列可能的是(  )

            組卷:11引用:5難度:0.7

          二.簡答題(共3小題)

          • 29.為四則運算式“6+(8-2)*2÷3”轉逆波蘭表達“682-2*3÷+”設計算法,編程實現。
            分析:在數學運算表達式中,運算符總是置于與之相關的兩個運算對象之間,在計算結果時,要考慮括號、運算符號的優先性。為了程序實現的方便,波蘭邏輯學家J.Lukasiewicz提出了另一種表示法,將運算符置于其運算對象之后,沒有括號,不用考慮運算符號的優先性。這種表達式稱為后綴表達式,又叫逆波蘭表達式。
            如表達式“682-2*3÷+”是四則運算式“6+(8-2)*2÷3”的逆波蘭表達式。為了處理方便,規定表達式中的數均為小于10的正整數,運算符為+、-、*、÷。
            (1)抽象建模
            設計兩個棧bds、fh,棧bds用來存放表達式,棧fh用來暫時存放運算符。從左往右掃描四則運算式,遇到數字時,入棧bds;遇到運算符號時,根據運算符號的優先級設計進棧與出棧。
            四則運算式“6+(8-2)*2÷3”轉換規則的模擬過程如表所示:

            結合表格的操作過程,用棧bds和棧fh記錄每個操作后的棧內情況(見圖),那么在操作2中棧fh里有內容為
             
            (請從棧底到棧頂順序書寫)。

            (2)設計算法
            基于問題的抽象與建模,解決該問題的主要算法描述如下:
            從左往右遍歷四則運算式s(設中間變量為ch):
            1)當ch是數字,直接入棧bds;
            2)當ch是運算符:
            a.若ch為左括號時,直接入棧fh;
            b.若ch為右括號時,則將棧fh元素彈出,壓入棧bds,直到遇到左括號(左括號只
            彈出,不壓入棧bds);
            c.若ch為其它運算符時,如果運算符ch優先級大于棧fh中棧頂元素的優先級(或棧fh為空),直接入棧fh;否則,將棧fh元素依次彈出,并壓入棧bds,直到運算符ch優先級大于棧fh中棧頂元素的優先級(或棧fh為空);
            3)將棧bds中元素依次出棧,即為該四則運算s的后綴表達式。
            (3)編寫程序
            實現上述功能的Python代碼如下,請在橫線處填入合適代碼。

            組卷:20引用:2難度:0.3
          • 30.【加試題】要求將某一字符串中指定的字符改寫成小寫或大寫(如果原先是大寫就改成小寫,反之改成大寫),并將處理后的字符重新輸出.
            程序界面如下圖所示,在Text1中輸入原始字符串,在Text2中輸入需要改變的字符,單擊“改變”按鈕后,在Text3中輸出處理后的結果.

            程序代碼如下:
            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
            在程序①、②、③橫線處填入適當的語句或表達式,把程序補充完整.
            (1)程序中①橫線處應填入
             

            (2)程序中②橫線處應填入
             

            (3)程序中③橫線處應填入
             

            組卷:28引用:3難度:0.1
          APP開發者:深圳市菁優智慧教育股份有限公司| 應用名稱:菁優網 | 應用版本:5.0.7 |隱私協議|第三方SDK|用戶服務條款
          本網部分資源來源于會員上傳,除本網組織的資源外,版權歸原作者所有,如有侵犯版權,請立刻和本網聯系并提供證據,本網將在三個工作日內改正