试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省Z20名校联盟(名校新高考研究联盟)2022届高三上学期信息技术8月第一次联考(暑假返校联考)试卷

一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则称该序列为摇摆序列。小王同学想求出某个数列的最长播摆子序列。

以序列[3,14,7,6,9,12,10,8,13,5]为例,整体不是摇摆序列,但子序列[3,14,7,9]、[3,14,6,12]等都属于摇摆子序列,其中最长的摇摆子序列[3,14,6,12,8,13,5]。根据第16图a分析得知,当序列有一段连续的递增(或递减)时,为形成摇摆子序列,我们只需要找到每一次转折中的拐点元素。

小王编写了一个VB程序实现该功能:程序运行时,从文本框Text1中读入数据,单击按钮Command1后,将计算得到的最长摇摆序列的长度输出到标签Label1中,并将具体的序列输出到文本框Text2中。程序运行界面如图b所示:

(1)、若文本框Text1中输入数据“2,4,5,3,2,1”,则最长摇摆子序列为
(2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

Dim a(1 To 20) As Integer

Dim b(1 To 20) As Boolean

Dim ans As String

Private Sub Command1_Click()

    Dim i As Integer, flag As Integer, n As Integer

    Dim gd As Boolean

    '从文本框 Text1读入数据,依次存储到a数组中,数据总数为n

    'b数组初值均为False

    '代码略

    flag = 0         '0代表开始,1代表上升,2代表下降

    For i=2 To n

        gd = True

        If flag = 0 Then

            If a(i) >a (i-1) Then

                flag= 1

            ElseIf a(i) < a(i - 1) Then

                flag = 2

            Else

                gd = False

           End If

        ElseIf flag = 1 And a(i) < a(i - 1) Then

            flag = 2

        ElseIf   Then

            flag = 1

        Else

            gd = False

        End If

        

    Next i

    If f(n)<3 then

        Label1.Caption =“不构成摇摆子序列”

    Else

        Label1.Caption =“最长摇摆子序列长度为:”+ Str(f (n))

        Text2.Text =“最长摇摆子序列为:”+ ans

    End If

End Sub

Function f(n As Integer) As Integer

    f = 1: ans=Str(a(n))

    For i=n-1 To 1 Step-1

        If b(i) Then

            f=f+1

            

        End If

    Next i

End Function

举一反三
返回首页

试题篮