试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省高中信息技术 数组练习

某游戏规则如下:将2*n位队员按2人一组分成n个队(n<10),地面上有一排格子,共2*n个,每个格子都对应一个小于10的随机正整数。游戏开始后,所有队员都选择站到一个空的格子里,等他们站满格子后,开始为每位队员进行记分。记分规则:每组甲乙两个队员,甲队员的分数是从自己所站的格子开始,按照格子序号递减,将这些格子中的数字一直累加到第1个格子。乙队员的分数是从自己所站的格子开始,按照格子序号递增,一直将格子中的数字累加到第2*n个格子。如果同一队的两名队员得到的分数相同,则该组参赛队获胜。

例如:如图所示,有4个队8位队员,地上一排格子的数字依次为2、1、1、7、9、2、5、6。若某队甲队员站在第4个格子,则其分数为2+1+1+7=11;乙队员站在第7个格子,则其分数为5+6=11。两者相等,则该队获胜。

gz(1)

gz(2)

gz(3)

gz(4)

gz(5)

gz(6)

gz(7)

gz(8)

←→

2

1

1

7

9

2

5

6

甲                                             乙

(1)、假设有3队队员,地上一排格子的数字依次为6、7、3、4、3、9。若某队甲队员站在第3个格子上,那么该队乙队员站在第个格子上才能获胜。

(2)、实现上述功能的VB程序如下。请在划线处填入合适代码。

Dim n As Integer

Dim gz(1 To 20) As Integer

Private Sub Command1_Click()

Dim dfa As Integer, dfb As Integer

Dim ta As Integer, tb As Integer

Randomize

For i = 1 To 2 * n

 gz(i) = Int(Rnd* 9 + 1)

 List1.AddItem “gz(“ & i & ”)” & gz(i)

Next i

num = 1

For j = 1 To 2 * n

 ta = j

 dfa = zwdf(ta, True)

 For k = 1 To 2 * n

    tb = k

   

    If dfa = dfb Then

     List2.AddItem num & “甲队员(“ & j &”)得分=” & dfa & “乙队员(“ & k & ”)得分=” & dfb

     num = num + 1

    End If

 Next k

Next j

List2.AddItem “获胜的站法共有:”++ “种”

End Sub

Function zwdf(p As Integer, r As Boolean) As Integer

Dim fs As Integer

If r = True Then

  

    fs = fs + gz(i)

  Next i

Else

  For i = p To 2 * n

  fs = fs + gz (i)

  Next i

End If

zwdf = fs

End Function

举一反三
【加试题】小明编写了一个VB应用程序,用于统计英文字母的个数,当用户输入一行英文语句,可以统计其中每个字母出现的次数。程序运行时界面如图所示。

程序运行时,在Text1中输入字符串,单击“开始统计”按钮,在List1中显示统计结果。函数IsLetter(x)功能,若x是字母,则返回值为字母x在字母序列“A”~“Z”中的序号,如字母“A”的序号为0,字母“D”的序号为3。若x不是字母,则返回值为-1。

Function IsLetter(x As String) As Integer

        If "A" <= x And x <= "Z" Then

            IsLetter = Asc(x) - Asc("A")

        ElseIf "a" <= x And x <= "z" Then

            IsLetter = Asc(x) - Asc("a")

        Else

                       ①        

        End If

    End Function

    Private Sub Command1_Click()

        Dim d(25) As Integer, m As Integer, n As Integer

        Dim s As String, c As String

        List1.Clear

        For m = 0 To 25                  '初始化数组d

            d(m) = 0

        Next m

        s = Text1.Text

        For m = 1 To Len(s)              '读取字符串中的字符进行判断

            c = Mid(s, m, 1)

            n = IsLetter(c)

            If n <> -1 Then    ②  

        Next m

        For m = 0 To 25                  '输出结果

            If    ③   Then

               List1.AddItem (Chr(m + Asc("a")) & ":" & d(m))

            End If

        Next m

   End Sub

回答下列问题:

返回首页

试题篮