当前位置: 高中信息技术 / 综合题
  • 1. (2021高三上·浙江开学考) 小张想要了解自己体育锻炼情况,他以数字的形式记录了自己每天进行的运动项目,如“1,1,2,3,2,3,2,3,3,1,1,4,3”。其中数字1代表篮球;2代表乒乓球;3代表慢跑,…。在记录了一段时间后,小张想知道自己在一段连续时间内最“喜爱”的两项体育运动是什么,以及连续进行的次数。对于这两项体育运动的要求是:

    1)这两项运动在记录中必须连续出现,不能被其他运动打断,如“1,2,2,1,2”是一种可能的结果;“1,2,2,1,2,3”则不是可能的结果;

    2)这两项运动在记录中出现的次数必须是最多的一种组合。

    运动记录

    1,1,2,3,2,3,2,3,3,1,1,4,3

    序号

    两项运动

    1,1,2

    2,3,2,3,2,3,3

    3,3,1,1

    1,1,4

    4,3

    从上表分析可知,小张在一段时间内连续进行的两项运动有5种不同组合,其中组合②中的两项运动持续时间最长,所以最“喜爱”的两项运动为2和3,共连续进行了7次。

    根据算法思想,编写VB程序实现如下功能:程序初始化时读取小张记录的一段时间内的所有运动项目,以逗号间隔显示在文本框Text1中,单击“寻找运动项目”按钮Command1,在标签Label4上显示最喜爱的两项运动编号,在文本框Text2中显示这两项运动最长持续的次数。程序运行界面如图所示。

    1. (1) 若输入序列为“3,5,5,4,3,5,5,5,3,3,2,6”,最喜爱的两项运动连续进行的次数为
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

      Dim a(1 To 100) As Integer, n As Integer

      Private Sub Form_Load( )

          '读取已有记录项目总数n

          '读取记录的每次运动项目存入数组 a,并在文本框Text1中显示,代码略

      End Sub

      Private Sub Command1_Click()

          Dim x As Integer, y As Integer    'x, y分别表示当前记录中两个不同项目

          Dim c1 As Integer, c2 As Integer 'c1,c2 分别表示两个项目在当前统计过程中出现的次数

          Dim i As Integer, j As Integer, m1 As Integer, m2 As Integer, ans As Integer

          i = 1: j = 1 

          Do While j <= n And a(i) = a(j)

              j = j + 1

          Loop

          x = a(i): y = a(j)

          c1 =   

          c2 = 1

          ans = j - i + 1

          Do While j < n

              j = j + 1

              If a(j) = x Then

                  c1 = c1 + 1

              ElseIf a(j) = y Then

                  c2 = c2 + 1

              Else

                  Do While

                      If a(i) = x Then c1 = c1 – 1 Else c2 = c2 - 1

                      i = i + 1

                  Loop

                  If Then

                      y = a(j)

                      c2 = 1

                  Else

                      x = a(j)

                      c1 = 1

                  End If

              End If

              If ans < j - i + 1 Then

                  ans = j - i + 1

                  m1 = x

                  m2 = y

              End If

          Loop

          Label4.Caption = Str(m1) + "和" + Str(m2)

          Text2.Text = Str(ans)

      End Sub

微信扫码预览、分享更方便