当前位置: 高中信息技术 / 综合题
  • 1. (2021高三下·浙江月考) 抢红包游戏:微信抢红包游戏成为了一代人的经典回忆,游戏将总金额为n的“红包”随机分配给m个玩家,红包的分配需同时满足以下规则:①所有人抢到的金额总和跟总金额n相等;②每个人至少抢到1分钱;③每个人抢到的金额随机;④每个人抢到金额大小的概率平等。

    满足以上规则的最简单算法可描述为:假设总金额为n元,为使问题简单化,我们将总金额乘以100,此时的单位为分,使得问题在整数范围内解决。假设分发给m个人,则我们只需在[1,100n- 1]长度的范围内随机生成m-1个不重复的点,这些点将长为100n的线段划分为m个段,每一段长度即可表示红包金额,再将每一段长度数据除以100换算为单位元输出。

    编程实现:分别在文本框Text1 和Text2中输人总金额n和总人数m,点击“抢红包”按En钮commandl,在列表框Listl中输出抢红包结果,并输出“手气最佳”数据。程序运行界面如下图所示。实现上述算法的VB程序如下,回答以下问题:

    1. (1) 为使程序开始运行时,窗体标题自动更改为“趣味抢红包”,则可在(单选,填字母:(A .Command1_ Click()/ B .Form_ Load()/C .Form1. Load())事件处理过程中添加语句Forml. Caption=“趣味抢红包”。
    2. (2) 请将划线处的代码补充完整。

      Private Sub Command1_ Click()

      Dim n As Integer, m As Integer

          Dim f(1 To 32767) As Boolean

      n= Int(Val(Text1.Text) * 100)

          m= Val(Text2.Text)

          If m> n Then

              List1.AddItem "游戏无法继续,结束!"

          Else

              Randomize

              For i=1 To m- 1

      t= Int(Rnd * (n-1))+1

                  

                  f(t)= True

              Next i

              

              begin= 1

              Max=0

              For i=1 To n

                  If f(i) Then

                      

                      If red > Max Then Max= red

                            '改错

                      List1.AddItem Str(red / 100)

                  End If

              Next i

              List1.AddItem "手气最佳:"+Str(Max / 100)

          End If

      End Sub

    3. (3) 方框处的代码有误,请改正。
    4. (4) 虚线框内的代码实现的功能是

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