当前位置: 高中信息技术 / 综合题
  • 1. (2020高三上·浙江月考) 有一组原来按升序排列的正整数,第p个至第q个数据(p和q的值分别由文本框Text1和Text2输入,且p<q)的区间被打乱,其他数据的位置不变,小陈首先依据冒泡排序的思想对该区间中的数据进行升序排序使得整组数据恢复升序排列,然后依据对分查找的思想在该组数据中查找满足[k1, k2](k1和k2的值分别由文本框Text3和Text4输入,且k1<k2)范围的数据个数并显示在标签Label1中。相关示例如下(其中p=4,q=7,k1=70,k2=80)。

    排序前

    55

    70

    70

    78

    71

    79

    75

    80

    80

    90

    排序后

    55

    70

    70

    71

    75

    78

    79

    80

    80

    90

    查找该组数据中满足[k1, k2]范围的数据个数为:8

    实现上述功能的VB程序如下,请回答下列问题:

    1. (1) 下列对象中没有Caption属性的是 (单选,填字母:A . 标签 Label1 /B . 命令按钮 Command1 /C . 文本框 Text1)。
    2. (2) 程序加框处代码有错,请改正。

      Private Sub Command1_Click()

      Const n = 10

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

      Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer

      Dim p As Integer, q As Integer 

      Dim b As Integer      '查找满足条件的第一个数据所在数组元素的下标

      '读取排序前的一组正整数,存储在数组a中。代码略

      p= Val(Text1.Text)

      q = Val(Text2.Text)

          For i = p To q - 1

              For j =  Step -1

                  If a(j) < a(j - 1) Then

                      k = a(j): a(j) = a(j - 1): a(j - 1) = k

                  End If

              Next j

          Next i

          k1 = Val(Text3.Text) 

          k2 = Val(Text4.Text) 

          i = 1: j = n

          Do While i <= j

              m = (i + j) \ 2

              If   ①    Then

                  i = m + 1

              Else

                  j = m - 1

              End If

          Loop

          b =    ②   

          i = 1: j = n

          Do While i <= j

              m = (i + j) \ 2

              If a(m) <= k2 Then

                  i = m + 1

              Else

                  j = m - 1

              End If

          Loop

      Label1.Caption = Str   ③     

      End Sub

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

       ② ③ 

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