相关试卷

  • 1、在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:

    ① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。

    ②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。

    ③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。

    小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。

    请回答下列问题:

    (1)、n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是(单选,填字母:A . 5 4 3 1 2/B . 5 4 1 3 2/C . 3 4 5 1 2)
    (2)、请在划线处填入合适的代码。

    Dim n As Integer   '总人数/总作品数

    Dim m As Integer   '每人分配篇数

    Dim a(1 To 500) As Integer  '数组a大小满足处理要求

    Dim c(1 To 100) As Integer  '数组c大小满足处理要求

    Private Sub Command1_Click()

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

      n = Val(Text1.Text): m = Val(Text2.Text)

      Randomize

      i = 1

      Do While i <= m

        For j = 1 To n

          c(j) = 0         '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1

        Next j

        For j = 1 To n

          If j = n - 1 And c(n) = 0 Then

                ①   

          Else

            k = r(n, j)

          End If

          a((i - 1) * n + j) = k           '分配数字k到当前方案的第j个位置上

          c(k) = 1

        Next j

        If    ②     Then i = i + 1

      Loop

      s = ""

      For i = 1 To n

        s = "参赛者" & i & ":"

        For j = 1 To m

          s = s + Str(a((j - 1) * n + i))+ ","

        Next j

        List1.AddItem s

        s = ""

      Next i

    End Sub

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

    '生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0

    End Function

    Function check(c As Integer) As Boolean

    '本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE

      Dim p As Integer, f As Boolean

      f = True

      p = 1

      For i = 1 To c * n

        If   ③     Then

          f = False: Exit For

        End If

        p = p mod n +1

      Next i

      check = f

    End Function

     ② ③ 

  • 2、小董编写了一个有关“筛选操作”的VB程序,实现如下功能:在文本框Text1中显示一组随机生成个位数为“9”的两位数(原始数据),在文本框Text2中输入筛选个数,单击“操作”按钮Command1后,在文本框Text3中按降序显示所筛选个数的不重复最大数据(以逗号分隔    并以数据结尾),若在文本框Text2中输入的数大于原始数据中不相同数的个数,则在文本框Text3中显示“筛选的个数太大,请重新输入!”。程序运行界面如图所示。

    (1)、如图所示,该VB程序的窗体中共有类对象(填数字)。
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 10

    Dim d(n) As Integer, c As Integer

    Private Sub Form_Load()

      Dim i As Integer, j As Integer, f As Boolean, s As String

      Randomize

      c = n

      For i = 1 To n

        f = False

        d(i) =        ' 随机生成个位数为“9”的两位数

        For j = 1 To i - 1

          If Then f = True

        Next j

        If f Then c = c - 1

      Next i

     '原始数据在文本框Text1中显示。代码略

    End Sub

    Private Sub Command1_Click()

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

      Dim cnt As Integer,t As String, s As String

      d(0) = 100

      cnt = Val(Text2.Text)

      If cnt > c Then

        Text3.Text = "输入筛选的个数太大,请重新输入!"

        Exit Sub               'Exit Sub表示退出过程

      End If

      For i = 1 To cnt

        k = i

        For j = i + 1 To n

          If d(j) < d(i - 1) And( )Then k = j

        Next j

        If k <> i Then

          t = d(i): d(i) = d(k): d(k) = t

        End If

      Next i

      For i = 1 To cnt

        s = s + Str(d(i)) + ","

      Next i

      Text3.Text =

    End Sub

    (3)、程序中加框处代码有错,请改正。
  • 3、小章想将a数组中n个元素排列成合唱队列形态,具体方法如下:

    ①如果n是奇数,选出所有数据中最大元素,将其放在a数组正中间位置。

    ②从剩下待处理数据中选出最大的两个元素,同时将较大元素放在已处理数据段的右侧,较小元素放在已处理数据段的左侧。

    ③反复执行操作②,直到所有数据处理完毕。按上述要求,小章编写一个VB程序,功能如下:

    在文本框Text1中输入n,单击“生成”按钮Command1,并在文本框List1中显示排序前数据;单击“排序”按钮Command2,在列表框List2中输出处理后的结果。程序运行界面如下图所示。

    (1)、下列哪个选项,可以将窗体Form1标题改为:“生成合唱队列”(单选,填字 母:A . Form.Caption="生成合唱队列"/ B . Label1.Caption ="生成合唱队列"/ C . Form1.Caption="生成合唱队列")
    (2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

    Dim a(1 To 100) As Integer

    Dim n As Integer

    Private Sub Command1_Click()

    '在文本框Text1中输入n(n<=100)

    '排序前数据存储在数组a中,并在文本框List1中显示

    '代码略

    End Sub

    Private Sub Command2_Click()

      Dim i As Integer, j  As Integer, t As Integer

      Dim pMax1 As Integer, pMax2 As Integer pMax1 = n \ 2 + 1: pMax2 = n \ 2

      If  Then

        For i = 1 To n

          If a(i) > a(pMax1) Then t  = a(pMax1): a(pMax1) = a(i): a(i) = t

        Next i

        pMax1 = pMax1 + 1

      End If

      For i = 1 To n \ 2

        If Then t = a(pMax1): a(pMax1) = a(pMax2): a(pMax2) = t j  = pMax1 Mod n  + 1

        Do While j <> pMax2

          If a(j) > a(pMax1) Then

            t = a(pMax1): a(pMax1) = a(j): a(j) = t

            t = a(pMax2): a(pMax2) = a(j): a(j) = t

         

            t = a(pMax2): a(pMax2) = a(j): a(j) = t

          End If

          

        Loop

        pMax1 = pMax1 + 1

        pMax2 = pMax2 - 1

      Next i

      For i = 1 To n

        List2.AddItem Str(a(i))

      Next i

    End Sub

    (3)、程序加框处代码有错,请改正。
  • 4、小李编写VB程序,功能如下:单击“产生数组”按钮Command1,则随机生成10个取值范围是1~10的正整数,分别存储到数组a中,对数组a的元素进行升序排列,并在标签Label1中显示;再单击“重复数”按钮Command2,则在排序后的数组a中查找连续个数最多的一组重复数值,若有两组连续重复数个数一样多,则取数值小的一组,将重复数的数组元素下标显示在标签Label2中。运行界面如图所示。

    (1)、已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“统计重复数”,则可在              (单选,填字母)事件过程中添加代码:Form1.Caption = “统计重复数”。
    A、Form_Click() B、Form_Load() C、Form1_Click() D、Form1_Load()
    (2)、实现上述功能的程序如下,请在划线处填写合适代码,使程序正常运行。

    Dim a(1 To 10) As Integer

    Dim n As Integer

    Private Sub Command1_Click()

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

      Dim s As String

      Randomize

      n = 10

      For i = 1 To n

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

      Next i

      For i = 1 To n - 1

        k = i

        For j = i + 1 To n

          If a(j) < a(k) Then

        Next j

        If k <> i Then

          temp = a(i): a(i) = a(k): a(k) = temp

        End If

      Next i

      s = ""

      For i = 1 To n

        s = s + Str(a(i))

        If i < n Then s = s + ","

      Next i

      Label1.Caption = s

    End Sub

    Private Sub Command2_Click()

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

      Dim length As Integer, origin As Integer

      Dim s As String

      k = 1:origin=1:length = 1

      For i = 2 To n

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

          k = k + 1

          If k > length Then

            length = k

            origin = 

          End If

        Else

          k = 1

        End If

      Next i

      s = ""

      For j = origin To

        s = s + Str(j)

      Next j

      Label2.Caption = s

    End Sub

    (3)、程序加框处代码有错,请改正。
  • 5、小王设计了一个利用矩阵“翻转法”实现矩阵逆序输出的程序,其功能为:运行程序时,在文本框 Text1 中输入矩阵大小n,点击“产生矩阵”按钮 Command1,在列表框 List1 中显示一个 n×n 的矩阵,该矩阵数据为随机两位正奇数。点击“翻转矩阵”按钮 Command2,该矩阵翻转(水平翻转和垂直翻转均要实现)后显示在列表框 List2 中,再点一次“翻转矩阵”按钮 Command2,列表框 List2 中显示的矩阵被还原为初始状态。程序运行界面如图所示。

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

    (1)、在上图的程序运行界面基础上,再连续两次单击Command2按钮,则列表框List2中第一行显示的内容是
    (2)、实现此程序的代码如下,请完成下划线程序填空。

    Dim n As Integer

    Dim L As String

    Dim i as Integer

    Dim j as Integer

    Dim a(1 To 100) As Integer

    Dim b(1 To 100) As Integer

    Private Sub Command1_Click()

      n = Val(Text1.Text)

      Randomize

      For i = 1 To n * n

        a(i) =  + 1

      Next i

      For i = 1 To n

        L = ""

        For j = 1 To n

          L = L + " " + Str(a((i - 1) * n + j))

        Next j

        List1.AddItem L

      Next i

    End Sub

    Private Sub Command2_Click()

      List2.Clear

      For i = 1 To n

        L = ""

        For j = 1 To n

          b((i - 1) * n + j) = 

          L = L + " " + Str(b((i - 1) * n + j))

        Next j

        List2.AddItem L

      Next i

      For i = 1 To n * n

        a(i) =

      Next i

    End Sub

  • 6、字符串s1中保存了一个单词,字符串s2中保存了一句以空格结尾的句子,字符串s1和s2均由小写字母组成且s2中各个单词之间仅用空格隔开,下列程序能够统计单词s1在句子s2中出现的次数:

    i=1: j=1:cnt=0

    Do While j<= Len(s2)

      If Mid(s1,i,1)<> Mid(s2,j,1)Then

       

      Else

        Do While i<=lens and j<=lens2

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

           

          Else

           

          End If

        Loop

        If i=len(s1)+1 And Mid(s2, j, 1)="" then

          cnt= cnt+1

        End If

        i=1

      End If

    Loop

    方框中的代码分别是:①i=1:j=j+1  ②i=i+1:j=j+1 ③j=j+1

    代码从上到下正确的顺序是(    )

    A、①②③ B、③②① C、③①② D、②①③
  • 7、有如下VB程序段:

    For i=1 to 3

        For j=1 to 5-i

            If a(j)>a(j+1) Then

                t=a(j) : a(j)=a(j+1) : a(j+1)=t

            End If

        Next j

        Text1.Text = Str(a(i))+Text1.Text

    Next i

    数组元素a(1)到a(5)的值依次为“2,9,7,8,5”。若该程序段执行后,文本框Text1显示的内容是(    )

    A、2 5 7 B、9 8 7 C、2 7 7 D、7 7 2
  • 8、有如下VB程序段:

    For i = 1 To 6

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

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

        a(i) = a(i) + 1

      Else

        a(i) = a(i) Mod 2

      End If

    Next i

    执行该程序段后,在下列选项中,a(1)~a(6)各元素可能的值是(    )

    A、0,1,1,0,0,1 B、0,5,6,6,10,9 C、3,6,7,8,11 D、2,1,8,3,12,5
  • 9、有如下VB程序段:

    For i=2 to 5

      For j=i to 5

        If j mod i=0 then a(j)=a(j)+1

      Next j

    Next i

    For i=1 to 5

      If a (i)<>1 then s=str(i)+s

    Next i

    若数组a 的初始值都为0,则运行该程序段后,s的值为(    )

    A、2 3 5 B、1 4 C、5 3 2 D、4 1
  • 10、有如下VB程序段:

    Dim d(1 to 5)as integer, i as integer

    Dim flag as Boolean, j as integer

    ‘给数组元素d(1)至d(5)赋初值为1,代码略

    Randomize

    For i=1 to 5

      J = 1: flag = True

      d(i) = int(Rnd*9)

      Do while j< =i-1 and flag = True

        d(i) = int(Rnd*5+1)

        If d(i) = d(j) then i=i-1: flag = False

        j = j+1

      Loop

    Next i

    运行程序后,数组中的数据值可能是(    )

    A、1 3 4 5 6 B、3 5 4 1 1 C、8 3 1 2 5 D、1 2 6 2 1
  • 11、有如下 VB 程序段:

    Dim n As Integer

    Dim sum As Integer

    Dim i As Integer

    Function fx(i As Integer) as Integer

      If i = 1 Then

        fx = 5 

      Else

        fx = 5 * 2 ^ (i - 1) + fx(i - 1)

      End if

    End Function

    Private Sub Command1_Click()

      n = Val(Text1.Text): sum = 0

      For i = 1 To n

        sum = sum + fx(i)

      Next i

      Label1.Caption = Str(sum)

    End Sub

    若在 Text1 中输入4,单击 Command1,则 Label1 中显示的内容为(    )

    A、55 B、75 C、80 D、130
  • 12、有如下 VB 程序段:

    a(1) = 1: a(2) = 1:b(1) = 1: b(2) = 2

    For i = 3 To 5

      a(i) = a(i - 1) + a(i - 2)

      b(i) = b(i - 1) + a(i)

    Next i

    执行该程序段后,数组元素b(5)的值为 (   )

    A、5 B、8 C、12 D、15
  • 13、有如下VB程序段:

    For i = 1 To Len(Text1.Text)

      c = Mid(Text1.Text, i, 1)

      If c >= "0" And c <= "9" Then

        x = Val(c)

        a((x + 1) Mod 10) = a((x + 1) Mod 10) + 1

      End If

    Next i

    s = ""

    For i = 0 To 9

      s = s & a(i)

    Next i

    Text2.Text = s

    数组元素a(0)到a(9)的值均为0,执行该程序段后,文本框Text2显示的内容为“1302000100”。则文本框Text1中输入的内容可能是(   )

    A、2020-6-09 B、2020-02-28 C、2020-6-01 D、2019-01-07
  • 14、小李基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第i趟排序从a(i)….a(bottom)中查找最小值并记录其下标k,同时将后面的每个元素与a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与a(i)交换。

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

    Const n = 10

    Dim a(1 To n) As Integer

    Private Sub Command1_Click()

      Dim i As Integer, j As Integer, t As Integer

      Dim k As Integer, bottom As Integer

      '获取排序前数据,依次存储在数组 a 中,并在文本框 Text1 中显示。代码略

      bottom = n: i = 1

      Do While i <= bottom - 1

        k = i: j = bottom

        Do While j > i

          If a(j) < a(k) Then

            k = j

          ElseIf a(j) = a(i) Then '若发现重复数据,进行剔除处理

            a(j) = a(bottom)

          IfThen k = j

            bottom = bottom - 1

          End If

          j = j - 1

        Loop

        If k <> i Then

          t = a(k): a(k) = a(i): a(i) = t

        Else

         

        End If

      Loop

      For i = 1 To

        Text2.Text = Text2.Text + Str(a(i))

      Next i

    End Sub

  • 15、某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:

    ①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为 1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;

    ②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。

    最后把所得到的字符连接起来就是密文。

    例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。

    该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。

    请回答以下问题:

    (1)、如果密钥为“bc”,字符“d”加密后的密文为:(字母“a”的 ASCII 码为97)
    (2)、请完善以下程序代码。

    Private Sub Command1_Click()

      Dim s As String, sn As String

      Dim i As Integer, t As Integer, u As Integer

      Dim p As Integer, g As Integer

      sn = ""

      For i = 1 To Len(Text1.Text)

        t = Asc(Mid(Text1.Text, i, 1))

        If t >= Asc("a") Then

          g = Asc("a")

        Else

          g = Asc("A")

        End If

        u = Asc(Mid(Text2.Text, (i - 1) Mod Len(Text2.Text) + 1, 1))

        p =

        t = t - g

        If i Mod 2 = 1 Then

          t = (t + p) Mod 26

        Else

          t =

        End If

        sn = sn + Chr(t + g)

      Next i

      Text3.Text = sn

    End Sub

    Function txor(x As Integer, y As Integer) As Integer    'x、y求异或并返回十进制

      Dim a As Integer, b As Integer, r As Integer, i As Integer

      a = x: b = y

      r = 1

      For i = 1 To 7

        If a Mod 2 <> b Mod 2 Then

        a = a \ 2

        b = b \ 2

        r = r * 2

      Next   i

    End Function

  • 16、编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:

    (1)、如果输入的二进制数为“1101010”,则得到的结果为
    (2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Function bw(x As Integer, y As String) As String

    '函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数

      Dim r As Integer, i As Integer

      r = x Mod 4

      If r <> 0 Then

        For i = 1 To 4 - r

          y = "0" + y

        Next i

        x = Len(y)

      End If

      bw =

    End Function

    Private Sub Command1_Click()

      Dim m As String, n As Integer, i As Integer, a As Integer

      Dim s As Integer, s1 As String, j As Integer

      m = Text1.Text

      n = Len(m)

      Text2.Text = ""

      m =       '调整m的位数为4的倍数

      For i = 1 To n - 3 Step 4

        s = 0

        For j = i To i + 3

          a = Val(Mid(m, j, 1))

          s =

        Next j

        If s >= 10 Then

          s1 = Chr(Asc("A") + s - 10)

        Else

          s1 = CStr(s)      '函数CStr类似于Str,但无前导空格

        End If

        Text2.Text = Text2.Text + s1

      Next i

    End Sub

  • 17、小王基于选择排序算法编写了一个VB程序,功能如下:数组a有n*n个元素,按n行n列进行排列,按列进行升序排序。例如6*6的数组,第一列将a(1),a(7),a(13),a(19),a(25),a(31)进行排序。运行程序,在列表框List1中显示n*n个数列单击“排序”按钮Command1,在列表框List2中显示排序后的结果,程序运行界面如图所示。请回答下列问题:

    (1)、n=6时运行结果如图所示,图中1处“47”在数组a中下标是(填数字)。
    (2)、为了实现上述功能,请在划线处填写合适的代码。

    Const n =6

    Dim a(1 To n * n) As Integer

    Private Sub Form_Load()      '产生n*n个数组元素,每行按n个数显示在list1中

      For i = 1 To n * n

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

        s = s + Str(a(i))

        IfThen

          List1.AddItem s

          s = ""

        End If

      Next i

    End Sub

    Private Sub Command1_Click()

      Dim i As Integer, j As Integer, w As Integer, s As String

      For i = 1 To n * n

        k = i

        For j = k + n To

          If a(k) > a(j) Then k = j

        Next j

        If Then t = a(k): a(k) = a(i): a(i) = t

      Next i

    '将排序后数组a的元素,按每行n个数显示在list2中,代码略

    End Sub

    (3)、程序中加框处代码有错,请改正。
  • 18、若一个三位数abc满足,abc=a3+b3+c3则称abc为水仙花数。如三位数153满足13+53+33=1+125+27=153,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)

    Dim i As Integer, a As Integer, b As Integer, c As Integer

    For i=100 To

      a=i\100

      b=

      c=i-100*a-10*b

      If Then

        Print i

      End If

    Next i

  • 19、小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、*、\的运算,\为整除运算,且此处要求*和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下 Command1“计算”按钮后,在标签控件Label1中输出运算结果。程序界面如下图所示:

    (1)、在表达式中输入15-22\5*2+7=,则输出的结果
    (2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

    Function calculate(x As Integer, y As Integer, op As String) As Integer

      If op = "+" Then calculate = x + y

      If op = "-" Then calculate = x - y

      If op = "*" Then calculate = x * y

      If op = "\" Then calculate = x \ y

    End Function

    Function state(op As String) As Integer

      If op = "#" Then state = -1

      If op = "=" Then state = 1

      If op = "+" Then state = 1

      If op = "-" Then state = 1

     

      If op = "*" Then state = 3

    End Function

    Private Sub Command1_Click()

      Dim s As String, length As Integer, t As String Dim k As Integer, q As Integer

      Dim opt(0 To 3) As String Dim i As Integer

      Dim s1 As String

      Dim a(1 To 3) As Integer

      s = Text1.Text

      length = Len(s)

      t = "": k = 0: q = 0: opt(q) = "#"

      For i = 1 To length

        s1 = Mid(s, i, 1)

        If s1 >= "0" And s1 <= "9" Then

          t = t + s1

        Else

          k = k + 1

          a(k) = Val(t)

          t = ""

          Do While

            a(k - 1) = calculate(a(k - 1), a(k), opt(q))

            k = k - 1

            q= q - 1

          Loop

          q = q + 1

         

          If s1 = "=" Then Label1.Caption = Str(a(1))

        End If

      Next i

    End Sub

  • 20、某班级学生为毕业晚会的一个节目设计一个仿“V”字造型,先筛选出班级中n名学生的所有男生,然后将参演的男生按照身高,摆出中间低两边高(先右后左)的造型,如下图1 所示。王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command2,根据身高仿“V”字和造型进行有序排列,并将结果显示在文本框Text2 中。程序运行界面如图2所示。举例说明如下:

    原1-7号男生身高

    171 172 180 174 176 179 178

    筛选排序后序列

    171 172 174 176 178 179 180

    “造型设计”后序列

    180 178 174 171 172 176 179

    图1

    身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号

    图2

    Dim h (1 To n) As Integer

    Dim height1(1 To n) As Integer

    Dim height2(1 To n) As Integer

    Dim n As Integer, i As Integer, j As Integer, num As Integer, tmp As Integer

    Dim sex(1 To n) As String

    Private Sub Form_Load()

    'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!

    End Sub

    Private Sub Command1_Click()

      b = 0

      For i = 1 To n         'n名学生中的男生

        If sex(i) = “男” Then      ①      : height1(num) = h(i)

      Next i

      For i = 1 To num – 1

        For j = num To i + 1 Step -1

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

            tmp = height1(j): height1(j) = height1(j - 1): height1(j - 1) = tmp

          End If

        Next j

      Next i

      For i = 1 To num

        Text1.Text = Text1.Text + " " + Str(height1(i))

      Next i

    End Sub

    Private Sub Command2_Click()

      Dim left, right As Integer, i As Integer, mid As Integer

      mid = Int((1 + num) / 2)

      left = 0: right = 0

      height2(mid) = height1(1)

      For i = 1 To (num - 1) \ 2

        right = right + 1

        height2(mid + right) = height1(2*i)

        left = left + 1

             ②    

      Next i

      If num Mod 2 = 0 Then     ③   

      For i = 1 To num

        Text2.Text = Text2.Text + " " + Str(height2(i))

      Next i

    End Sub

    (1)、若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是
    (2)、在程序下划线处填入适当的语句或表达式。将程序补充完整:

上一页 1093 1094 1095 1096 1097 下一页 跳转