当前位置: 高中信息技术 / 综合题
  • 1. (2022·浙江模拟) 一副纸牌除去大、小王,有♠♥♣◆四种花样各13张,共52张,如果用字母A、B、C、D分别代表黑桃、红桃、梅花、方块,用数字1~13代表纸牌的点数,其中J、Q、K分别用11、12、13代表。

    按照某种理牌规则,先按纸牌点数从小到大整理,如果遇点数相同则再按花样♠♥♣◆(A~D)整理,约定俗成,点数3为最小纸牌,K(点数13)之后才是1,2为最大牌。

    小催同学运用冒泡排序思想设计了一个去除大、小王后剩下的52张牌中随机抽取17张纸牌(在列表框1中显示),并按上述理牌规则模拟理牌,将理好的纸牌在列表框2中输出的程序。

    程序运行界面如图所示。请回答以下问题:

    1. (1) 程序加框处代码有错,请改正。
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

      Const n= 17

      Dim s(1 To 17) As String

      Private Sub FP_ Click( )

          Randomize

          For i=1 To n

              s(i)= &. Int(Rnd * 13 + 1)     '随机产生一张牌,注:A的ASCII码为65

              For j=1 To i-1     '此程序段,检查产生的牌是否为重复牌

                  If s(i)=s(j) Then Exit For

              Next j

              If Then

                  i=i-1

              Else

                  List1. AddItem s(i)

              End If

          Next i

      End Sub

      Private Sub LP_ Click( )

          For i=1 To n-1

              For j=n To i +1 Step -1

                  d1= Val(Mid(s(j),2))     'Mid 函数的第3个参数(长度)省略,表示从第2位取到最后

                  d0= Val(Mid(s(j-1),2))

                  If  Then     '加框处改错

                      t=s(j) : s(j)=s(j-1) : s(j-1)=t

                  ElseIf d1=d0 Then

                      If  Then

                          t=s(j) : s(j)=s(j-1) : s(j-1)=t

                      End If

                  End If

              Next j

          Next i

          For i=1 To n

              List2. AddItem s(i)

          Next i

      End Sub

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