2.4 可以复用的代码 知识点题库

【加试题】格雷码(Gray code),又叫循环二进制码。一般的,格雷码可以解码成普通二 进制码。某格雷码 G1 G2 G3 …Gn-1 Gn,解码成普通二进制B1 B2 B3 …Bn-1 Bn的方法如下:

⑴把格雷码第1位G1作为解码后二进制码的第1位B1,即:B1= G1;

⑵从第2位起,将格雷码每一位与左边相邻一位的解码值作异或运算,结果作为该位格 雷码的解码值,即Bi=Gi⊕Bi-1。例如,某格雷码1101110,可解码成普通二进制码 1001011, 如图所示。

异或运算(⊕)规则:如果 a、b 两个值不相同,则 a⊕b 结果为 1;如果 a、b 两个值 相同,则 a⊕b 结果为 0,即:0 ⊕ 0 = 0,1 ⊕ 0 = 1,0 ⊕ 1 = 1,1 ⊕ 1 = 0。

小明编写了一个格雷码解码的VB程序,功能如下:在文本框Text1中输入格雷码,单击 “解码”按钮 Command1,程序对输入的格雷码进行转换处理,转换后的二进制码用十六进 制表示并显示在文本框 Text2 中。程序运行界面如图所示。

  1. (1) 格雷码“1011000110”转换成普通二 进制码,再用十六进制数表示是
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适代码。

    Const max = 16

        Function btoh(s As String) As String

        Dim i As Integer, value As Integer, ss As String

        Dim c1 As Integer, c2 As Integer, c3 As Integer, c4 As Integer ss = ""

        If Len(s) Mod 4 <> 0 Then

        s = Mid("0000", 1, 4 - n) + s '四位一组分组,最后一组不足 4 位补 0

        For i = 1 To Len(s) Step 4

        c1 = Val(Mid(s, i, 1))

        c2 = Val(Mid(s, i + 1, 1))

        c3 = Val(Mid(s, i + 2, 1))

        c4 = Val(Mid(s, i + 3, 1))

        value = c1 * 2 ^ 3 + c2 * 2 ^ 2 + c3 * 2 + c4

        If value <= 9 Then

        ss = ss + Chr(Asc("0") + value)

        Else

          

        End If

        btoh =ss

        Next i

        End Function

        Private Sub Command1_Click() Dim i As Integer

        Dim s As String, b As String Dim g(1 To max) As String

        s = Text1.Text: length = Len(s)

        For i = 1 To length

        g(i) = Mid(s, i, 1)

        Next i

        b = g(1)

        For i = 2 To length

        If g(i) =Then b = b + "0" Else b = b + "1"

        Next i

        Text2.Text =

    End Sub

【加试题】删数问题。输入一个数字串s,删去其中k个数字(k<数字串中数字的个数),使剩余数字在保持相对位置不变的情况下构成一个值最小的整数。例如,s=“19990608”,k=4,处理结果为:608。

删数的算法如下:

⑴如果k>0,则从前往后检测相邻字符,否则,转⑶;

⑵①若所有相邻字符都已非降序,则将串尾k个字符删去,k值置0,转⑴;

②若相邻两数存在逆序(即前一个数>后一个数),则将前一个数删除,k值变化,然后回到⑴;

⑶去掉串首的0,输出结果。按照上述算法思路,编写了VB程序,功能如下:在文本框Text1中输入数字串,在文本框Text2中输入删数的个数,单击“处理”按钮Command1,在文本框Text3中显示最小的整数。程序运行界面如图所示。

  1. (1) 如果输入的数字串为“20160125”,删除个数为4,则结果是
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    delete 函数说明:delete(st,x,y)为自定义函数,功能为在字符串st中删除x 位置开始的y 长度的子串。

    Private Sub Command1_Click()

    Dim s As String, k As Integer, i As Integer, j As Integer, n As Integer

    s = Text1.Text

    k = Val(Text2.Text)

    n = Len(s)

    Do While k > 0

    i = 1

    Do While i < n And 

    i = i + 1

    Loop

    If i = n Then

    n = n - k

    k = 0

    Else

    s = delete(s, i, 1)

    n = n - 1

    End If

    Loop

    i = 1

    Do While n > 1 And Mid(s, 1, 1) = "0"

    s = delete(s, 1, 1)

    I = i + 1

    n = n - 1

    Loop

    Text3.Text = s

    End Sub

    Function delete(st As String, x As Integer, y As Integer) As String

    'mid 函数第3个参数省略,则截取从开始位置向右到字符串结尾的所有字符

    delete = Mid(st, 1, x - 1) + Mid(st, x + y)

    End Function

二叉树是每个结点最多有两个子树的树结构,如值为9的结点有两个子树6和8,值为6的结点有两个子树5和3。若设二叉树的深度为h,则除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。现要构造大根堆,堆是一棵顺序存储的完全二叉树,大根堆又是一种特殊的堆,它的特征是每个双亲结点的值都不小于其孩子结点的值。如下图所示,值为9的结点是6和8的双亲结点,而6和8分别是9的左孩子和右孩子;同理,6是5和3的双亲结点,而5和3分别是6的左孩子和右孩子……

假如我们用数组表示上述大根堆:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

9

6

8

5

3

4

7

2

1

现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。

数组存储为:

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

6

8

5

3

4

7

2

1

8

具体操作方法如下:

第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;

数组存储为:

第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;

数组存储为:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

9

8

8

5

6

4

7

2

1

3

第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。

  1. (1) 若在图中增加值为4的新元素,则元素4将被存储在数组元素中。
  2. (2) 小段为此编制一VB程序:在文本框Tcxt1中输入结点个数n,单击命令按钮Command1,随机产生n个[1,99]的整数作为结点值,并由此构造大根堆,结果显示在列表框List1中,程序运行界面如图所示。

    实现上述功能的程序代码如下请在划线处填入合适的代码。

    Dim a(1 To 100) As Integer

    ‘该函数功能为实现数据的对齐输出

    Function pout(x As Integer, y As Integer) As String

    代码略

    End Function

    Private Sub Command1_Click()

    Dim tmp As Integer, Dim m As Integer

    Dim n As Integer, Dim s As String

    n = Val(Text1.Text)

    For i=1 To n

        a(i) = Int(Rnd()*99)+ 1

    Next i

    For i= 2 To n

        p=i

        f=p\2

        Do While  ①  

            tmp = a(p): a(p)= a(f): a(f) = tmp

            p=f

            f=p\2

            If f= 0 Then Exit Do

        Loop

    Next i

    k= n

    Do While k >=1

        m=m+1

          ②  

    Loop

    k= 1

    For i=0 To m- 1

        s=""

        For j= 1 To   ③  

            If k> n Then Exit For

            s=s+ pout(a(k), (2^(m-1)-2^i)/2^i)

            k=k+ 1

        Next j

        List1.AddItem s

    Next i

     ② ③ 

有Python程序段如下:

import pandas as pd

s1 = pd.Series(range(1,10,2))

print(s1)

该程序段运行后输出结果为(    )

A . B . C . D .
王老师为统计班级里部分学生的身高情况编写了一个VB程序,设计如下:在文本框Text1中输入每个学生数据,数据包括姓名、性别、身高(三位正整数),数据之间用“,”间隔;点击“计算”按钮Command1,分别计算出男女学生平均身高值,并在标签Label1中显示统计后的结果,程序界面如图所示。

  1. (1) 若输入数据时,漏输了最后一个逗号,是否会对计算结果产生影响(是/否)。
  2. (2) 实现上述功能的VB代码如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim i As Integer, m As Integer, f As Integer, tmp As String, flag As Boolean

        Dim s As String, ch As String, sex As Integer, cm As Integer, cf As Integer

        k = 0: sex = 0: m = 0: f = 0

        s = Text1.Text

        For i = 1 To Len(s) - 1

            ch = Mid(s, i, 1)

            

            If ch = "," And Mid(s, i + 1, 1) = "男" Then

                tmp = Mid(s, i + 3, 3)

                sex = 1

                

                flag = True

            ElseIf ch = "," And Mid(s, i + 1, 1) = "女" Then

                tmp = Mid(s, i + 3, 3)

                cf = cf + 1

                flag = True

            End If

            If flag = True Then

                m = m + sex * Val(tmp)

                f =  

                sex = 0

                i = i + 5

            End If

        Next i

        Label1.Caption = "男生平均身高:" + Str(m / cm) + "女生平均身高:" + Str(f / cf)

    End Sub

算法是指在有限步骤内求解某一问题所使用的一组定义明确的规则。某一个算法的描述如下:

①输入两个数A,B;

②如果A大于B,则将A的值赋给C,B的值赋给A,C的值赋给B;

③如果A不大于B,则A、B的值保持不变;

④输出A,B;

⑤结束。

  1. (1) 以上算法的描述属于哪一种:
  2. (2) 以上算法第④步用Python语言实现,可以写为:
  3. (3) 如果A的值是5,B的值是3,则执行完算法后,A的值是:
下列Visual Basic表达式的值等于34的是(   )
A . Mid("1234567", 3, 2) B . Abs(-33)+1 C . Sqr(34) D . Len("34")+1
关于python中的函数,以下描述错误的是(   )。
A . 函数能完成特定的功能,对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式即可 B . 使用函数的主要目的是减低编程难度和代码重用 C . Python 使用 del 保留字定义一个函数 D . 函数是一段具有特定功能的语句组
学校需要从A班(共50人)选拔一批学生集训准备比赛。小明为了减轻老师的工作量,编写了一个程序帮助老师解决这个问题,将所有学生的成绩排序后按照预设人数划取分数线。由于相同分数可能有多个学生,找出最接近预设人数的分数作为分数线。如果按照前分和按后分录取增加或减少的人数相同时则按高于录取人数进行录取,最后输出录取的学生名单。例如现要求选拔15个学生,排序后第14-20名的学生成绩相同,由于13比20更接近预录取人数,因此实际只录取13人。小明编写的VB程序如下,在文本框Text1中输入拟录取人数,单击“确定”按钮后,在标签Labe15和Labe16中输出录取人数和分数线,在List1中输出录取学生名单。

实现上述功能的代码如下。请回答下列问题:

  1. (1) 观察代码,“确定”按钮的对象名是
  2. (2) 请在划线处填入合适的代码

    Dim xh(0 To 100) As String .

    Dim cj(0 To 100) As Integer

    Const num = 50

    Private Sub Form_ Load ()

    ‘本过程从数据库读取每位学生的学号和成绩存放在数组xh和cj中,代码略

    End Sub

    Private Sub Com1_Click ()

        Dim i As Integer, m As Integer, n As Integer, k As Integer, a As Integ

        a = Val(Text1.Text)

        For i=1 To num-1

            k=

            If k<>i Then

                t=cj(k):cj(k)=cj(i):cj(i)=t

                s=xh(k):xh(k)=xh(i):xh(i)=s

            End If

        Next i

        m=a-1:n=a+1

        Do While cj(m) = cj(a)

            m=m-1

        Loop

        Do While cj(n) = cj(a)

            n=n+1

        Loop

        If m<>0 And  Then lq = m Else lq=n-1

        Label5.Caption = Str(lq)

        Label6.Caption = Str(cj(lq))

        List1.AddItem “字号”+“学号”+“成绩”

        For i=1 To lq

           List1.AddItem Str(i) +“ ”+xh(i)+Str(cj(i))

        Next i

    End Sub

    Function imax(x As Integer, y As Integer) As Integer

        Dim i As Integer,j As Integer

        i=x

        For j=x+1 To y

            If  Then i=j

        Next j

        imax = i

    End Function

有一个木棒游戏,探究在一堆木棒中取4根木棒组成一个正三角形的取法数量(三角形其中一边由两根木棒组成,长度相同的不同木棒算不同的方案)。如果取出长度为a,b,c,d(a <= b < c = d)的四根木棒能构成正三角形,那么a + b = c = d。算法如下:

⑴枚举两根短的木棒a和b;

⑵当a <> b 时,组合的数量= 长度为a 的木棒根数×长度为b 的木棒根数×长度为(a+b)的木棒取两根的取法数量;

⑶当a = b 时,组合的数量= 长度为a 的木棒取两根的取法数量×长度为(a+b)的木棒取两根的取法数量。

如木棒长度分别为“1,1,2,2,3,3”,当a=1,b=2 时,则c=d= 3,该情况的组合数量=(长度为1 的根数)*(长度为2 的根数)*(长度为3 的根数取两根的取法数量)= 2 *2 * 1 = 4。长度为3 的根数取两根的取法数量,即

程序运行界面如图所示,在文本框Text1输入一堆木棒的长度,以逗号间隔,点击“计算”按钮Command1后在标签Label1显示方案总数。

请回答下列问题:

  1. (1) 在文本框Text1中输入“2,3,3,6,6,6,7,”,能构成正三角形的取法数量是(填数字)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click( )

        Dim tmax As Integer, ans As Integer, k As Integer

        Dim i As Integer, a As Integer, b As Integer, tmp As Integer

        Dim c As String, s As String

        Dim t(20) As Integer

        '储存相同长度木棒的数量,如t(5)的值是长度为5的木棒的数量

        s = Text1.Text

        tmp = 0: k = 0

        ans = 0: tmax = 0

        For i = 1 To Len(s)

            c = Mid(s, i, 1)

            If c = "," Then

                k = k + 1

                t(tmp) =

                If tmp > tmax Then tmax = tmp

                tmp = 0

            Else

                tmp = tmp * 10 + Val(c)

            End If

        Next i

        For a = 1 To tmax \ 2       '枚举两根短的木棒

            For b = a To tmax

                If a + b > tmax Or t(a) * t(b) * t(a + b) = 0 Then Exit For

                If  Then

                    ans = ans + js(t(a), 2) * js(t(a + b), 2)

                Else

                    ans = ans + js(t(a), 1) *  * js(t(a + b), 2)

                End If

            Next b

        Next a

        Label1.Caption = "共有" + Str(ans) + "种方案"

    End Sub

    Function js(x As Integer, y As Integer) As Integer

        '计算在x个对象中取y个对象的组合数量,即

        '代码略。

    End Function

关于正整数m、n、k的运算,以下VB表达式中的结果与另三个可能不相同的是(    )
A . m=Int(Sqr(m))^2 B . Int(Rnd* k)/k <1 C . m-(m\2)*2=m Mod 2 D . (n\k=n/k)=(n Mod k =0)
用VB编程求两个字符串的最长连续公共子串,程序功能如下:在文本框Text1和Text2中分别输入任意两个字符串s1和s2,单击命令按钮 Command1,在标签 Label3和Label4中分别输出这两个字符串的最长连续公共子串和子串的长度其算法思想:分别从字符串s1和s2的左边第一个字符开始检查,若发现这两个字符串中有一个字符相同,则以这个字符为基准向右边扩大搜索范围,先检查其后面的第一个字符是否相同,若还是相同则继续搜索,直到找到不同的字符为止。然后按照该方法依次继续往后搜索,直到查找结束。程序界面如图所示,请回答下列问题:

  1. (1) 根据代码,若输入的s1为“Teacher”,s2为“teacher”,则最长连续公共子串为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Dim s1 As String, s2 As string, maxstr As string

    Dim len1 As Integer, len2 As Integer, maxlen As Integer

    Function Min (a As Integer, b As Integer) As Integer

        If a >=b Then min = b else min = a

    End Function

    Function Search (m As Integer, n As Integer) As Integer

        Dim c As Integer

        c = 1

        Do While c<= Min (len1 -m, len2 - n)

            If Mid (s1, m+ c, 1) = Mid(s2,n+c,1) Then

                

            Else

                Exit Do 'Exit Do的作用是退出Do循环

            End if

        Loop

        Search = c -1

    End function

    Private Sub Command1_Click()

        s1 = Text1. Text

        s2 = Text2. Text

        len1 = Len (s1)

        len2 = Len (s2)

        maxlen = 0: maxstr = ""

        Dim i As Integer, j As Integer, k As Integer

        For i=1 To len1

            For j=1 To len2

                If Mid(s1, i, 1) = Mid(s2,j,1) Then

                    k =  'k用于记录连续公共子串的长度

                    If (k> maxlen) Then

                        maxlen = k

                        maxstr =

                    End if

                End If

            Next j

        Next i

        Labe13. Caption= "最长连续公共子串为:"& maxstr

        Labe14. Cantion = "该子串长度是:"& str (maxlen)

    End sub

某教室在上午8点到12点的时间段可以安排活动。为了安排尽可能多场次的活动,按以下方法安排:先安排结束时间早的活动;若有多个活动的结束时间相同,则优先安排占用时间少的活动。要求编写一个VB程序,实现上述功能。在文本框Text1中输入一批数据(数据都用逗号分隔并以逗号结尾),奇数位置数据表示某活动的起始时间,偶数位置数据表示该活动的结束时间,单击“确定”按钮Command1后,在列表框List1中显示各活动的起始和结束时间,在列表框List2中显示选择安排的活动。运行界面如图所示。

 

  1. (1) 要清空Text1中的内容,可以把Text1对象的属性设置为空值。(单选,填字母:A . Caption / B . Text / C . Text.Clear)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

        Const n = 100

        Dim ss As String, t As String, i As Integer

        Dim k As Integer, p As Integer, temp As Integer

        Dim s(1 To n) As Integer, f(1 To n) As Integer

        Dim num(1 To n) As Integer, flag(1 To n) As Boolean

        ss = Text1.Text

        starttime = 480: endtime = 720      '教室可以安排活动时间为8:00到12:00

        k = 0: p = 0

        For i = 1 To Len(ss)

            ch = Mid(ss, i, 1)

            If ch <> "," Then

                t = t + ch

            Else

                

                p = (k - 1) \ 2 + 1

                If k Mod 2 = 1 Then s(p) = convert(t) Else f(p) = convert(t)

                t = ""

            End If

        Next i

        For i = 1 To p

            num(i) = i

        Next i

        For i = 1 To p

            List1.AddItem Str(num(i)) + " " + ff(s(i)) + " " + ff(f(i))

        Next i

        For i = 1 To p - 1

            For j = p To i + 1 Step -1

                If Then

                    temp = num(j): num(j) = num(j - 1): num(j - 1) = temp

                    temp = s(j): s(j) = s(j - 1): s(j - 1) = temp

                    temp = f(j): f(j) = f(j - 1): f(j - 1) = temp

                End If

            Next j

        Next i

        For i = 1 To p

            If s(i) >= starttime And f(i) <= endtime Then

                flag(i) = True

                

            End If

        Next i

        List2.AddItem "活动号 起始时间 结束时间"

        For i = 1 To p

            IfThen

                List2.AddItem Str(num(i)) + "  " + ff(s(i)) + "  " + ff(f(i))

            End If

        Next i

    End Sub

    Function convert(s As String) As Integer

        '把时间格式的s转换为整数,如"08:20"转化为500。代码略

    End Function

    Function ff(t As Integer) As String

        '把整数t转换为时间格式,如500转化为"08:20"。代码略

    End Function

  3. (3) 程序加框处的代码有误,请改正。
关于一些常用函数在程序中的功能,下列说法错误的是(    )
A . input("输入体重(kg):")显示"输入体重(kg):",并要求输入数据 B . float( input("输入身高(m):"))把数据转换成整型 C . float( input("输入身高(m):"))把数据转换成浮点型 D . print("正常")输出"正常"
有如下VB程序段:

For i=1 To 6

a(i) =Int(Rnd()*10)+1

    If a(i) Mod 2=i Mod 2 Then i=i-1

Next i

For i=1 To 2

    For j= 6 To i+2 Step -1

        If a(j)>a(j-2) Then

            t=a(j):a(j)=a(j-2):a(j-2)=t

        End If

    Next j

Next i

执行程序后,数组a各元素可能是(   )

A . 7,6,5,4,3,2 B . 6,7,4,5,2,3 C . 11,8,9,6,7,4,5 D . 2,5,6,9,8,11
图像的存储和处理在计算机内部的是采用二进制的形式,一幅图像常常由分辨率、颜色深度的方式来存储,Python的PIL模块能够直接读取图像中每个像素点的颜色信息,一般采用 RGB(红:0~255,绿:0~255,蓝:0~255)的方式表示颜色。现有一幅红字白底图像1.bmp,基本信息如下:

1 bmp

1 bmp属性截图

#程序段 1:

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

img=np.array(Image.open('1.bmp').convert("L"))

rows,cols=img.shape#获取图像的行数和列数

for i in range(rows):

for j in range(cols):

if img[i,j]>128:

img[i,j]=0 #设置为黑色

else:

img[i,j]=1 #设置为白色

plt.figure("1.bmp")

plt.imshow(img,cmap="gray") #以灰度模式显示

plt.axis("off")

plt.show()

说明:以上程序段1实现将1.bmp 以黑底白字显示

请根据以上信息回答下列问题:

  1. (1) 程序段1运行过程中,变量j的值范围是
  2. (2) 程序段2调试时出现“IndexError: index 128 is out of bounds for axis 1 with size 128”的提示,则上述程序出现这个错误的语句是

    A. rows,cols=img.shape                        B. for i in range(rows)

    C. img[i,j],img[i,cols-j]=img[i,cols-j],img[i,j]       D. plt.imshow(img,cmap="gray")

    应该修改为:

  3. (3) 将第(2)题表述的错误修改正确后,程序段2运行后图片呈现的内容:

    #程序段 2:

    from PIL import Image

    import numpy as np

    import matplotlib.pyplot as plt img=np.array(Image.open('1.bmp').convert("L"))

    rows,cols=img.shape

    for i in range(rows):

    for j in range(cols//2):

    img[i,j],img[i,cols-j]=img[i,cols-j],img[i,j]

    plt.figure("hh")

    plt.imshow(img,cmap="gray")

    plt.axis("off")

    plt.show()

下列赋值语句中变量 a 获取的值不是整型的是(   )
A . x=len("python") B . x=char(97) C . x=abs(int(9/2)) D . x=int(input( ))
Python语言中的“ord”是将字符转换为对应存储编码的函数,编码值以十进制数形式显示,例如>>>ORD(‘a’),输出的结果是:97,则>>>ord(d)输出结果为(    )
A . 102 B . 100 C . 98 D . 110
下列VB表达式的值与其他三项不同的是(     )
A . Val(Mid(″20220401″, 5, 2)) > Asc(″e″)-Asc(″a″) B . Abs(Int(-8.3))=(10 / 3) ^ 2 C . Not (″10″>″9″) And 45 Mod 5 \ 2=4 D . Int(Rnd() * 10)-10 <=0
小明对入栈、出栈规则研究发现,若有n个数字1,2,3,……,n按由小到大的顺序入栈,则出栈序列必须遵循下述原则:当数字x出栈后,则在x后出栈的小于x的所有数字必定以降序排列,比x大的数字可以夹杂在该降序序列中。现编写Python程序,按上述原则验证一个随机产生的出栈序列是否可能,程序运行界面如图所示。

  1. (1) 根据题意,若有7个数字入栈,则出栈序列“3→2→5→4→7→1→6”是 (单选,填字母:A .可能 / B .不可能)
  2. (2) 实现上述功能的Python程序代码如下,程序中加框处代码有错,请改正。

    import random

    n=int(input('请输入入栈元素的个数:'))

    data=[i+1 for i in range(n)]

    random.shuffle(data)     #将序列的所有元素随机排序

    s=''

    for i in range(n):

      s+=str(data[i])+'→'

      print('随机产生的出栈序列为:'+ )      #去除最后多余的'→'

      flag=True; i=0

    while i<n-1 and flag:

         ①   

      for j in range(i+1,n):

        if data[j]<data[i]:

          if data[j]<x:

            x=data[j]

          else:

               ②   

        break

        i+=1

    if flag:

      print('该出栈序列是可能的!')

    else:

      print('该出栈序列是不可能的!')

  3. (3) 请在划线处填入合适代码。