当前位置: 高中信息技术 / 综合题
  • 1. (2021·湖州模拟) 小明为班会活动的“抽奖环节”设计了一张获奖表。该“抽奖环节”功能如下:班级学生人数为n个,程序运行后,单击“发放号码牌”按钮Command1,随机生成n个不重复的[n+1, 2*n]内的整数,并在列表框list1中显示,学生按学号次序依次领取号码牌,例如:随机生成的第一个整数为54,则学号为1号的学生领取的号码牌为54。单击“抽奖”按钮Command2,在列表框list2中显示获奖表,获奖序列要求:第1名获奖的学生是号码牌数字中偶数最大的,第2名获奖的学生是号码牌数字中奇数最小的,第3名获奖的学生是号码牌数字中偶数第二大的,第4名获奖的学生是号码牌数字中奇数第二小的……取过的数字不能再取,以此类推,直到结束。其程序界面如图所示。

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

    Const n = 50

    Dim a(1 To n) As Integer

    Dim f(n + 1 To 2 * n) As Boolean

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer

        Randomize

        For i = n + 1 To 2 * n

            f(i) = False

        Next i

        For j = 1 To n

            a(j) = Int(Rnd * n) + n + 1

            If f(a(j)) = True Then j = j - 1 Else     ①      

        Next j

        For i = 1 To n

            List1.AddItem CStr(i) + "号-" + CStr(a(i))      'cstr 把数值类型转换为字符串类型,并去前导空格

        Next i

    End Sub

    Private Sub Command2_Click()

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

        m1 = 0: m2 = n \ 2

        For i = n + 1 To 2 * n

            If    ②    Then

                m1 = m1 + 1: a(m1) = i

            Else

                m2 = m2 + 1: a(m2) = i

            End If

        Next i

        For j = 1 To n \ 2

            List2.AddItem "第" + CStr(2 * j - 1) + "名" + Str(    ③    ) List2.AddItem "第" + CStr(2 * j) + "名" + Str(a(n \ 2 + j))

        Next j

    End Sub

    1. (1) 若仅对如下号码牌进行抽奖:1号-57,2号-76,3号-91,4号-83,5号-66,6号-82,则第3名获奖的学生学号是号。

       

    2. (2)  请在划线处填写合适代码,使程序正常运行。

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