当前位置: 高中信息技术 / 综合题
  • 1. (2022·金华模拟) 某校要举行国际象棋比赛,计划组织k场对弈。每个人最多参加2场对弈,最少参加0场对弈。每个人都有一个与其他人不相同的等级(用一个正整数来表示)。在对弈中,等级高的人用黑色的棋子,等级低的人用白色的棋子。每个人最多只能用一次黑色的棋子和一次白色的棋子。为增加比赛的可观度,观众希望k场对弈中双方的等级差的总和最小。

    比如有7个选手,他们的等级分别是30,17,26,41,19,38,18,要进行3场比赛。最好的安排是选手2对选手7,选手7对选手5,选手6对选手4。此时等级差的总和等于(18-17)+(19-18)+(41-38)=5达到最小。

    窗体form1的运行界面如下图所示,用户在文本框Text1中输入各位选手的等级(以逗号分隔),在文本框Text2中输人要对弈的场数k,单击计算按钮Commmand1,在文本框Text3中显示最小等级差总和。程序运行界面如图所示。

    1. (1) 若要使得的在程序启动时文本框text1中内容自动清空,可在以下哪个事件处理过程中编写代码实现                 (选填)
      A . form1_load() B . Text1 _Change() C . form_load() D . text1_load()
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

      Dim a(0 To 1000) As Integer

      Dim b(0 To 1000) As Integer

      Private Sub Command1_ Click()

          Sum=0

          k = Val(Text2. Text)

          s =Text1. Text

          cnt =1

          For i=1 To Len(s)

              c=mid(s, i, 1)

              If c="," Then cnt=cnt+1 Else

          Next i

          For i=1 To cnt-1

              For j=1 To cnt-i

                  If  Then

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

                  End If

              Next j

          Next i

          '计算出各等级选手之间差值

          For i=1To cnt- 1

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

          Next i

          For i=1 To k

              Min=i

              

                  If b(j) < b(Min) Then Min = j

              Next j

              Sum = Sum + b(Min)

              

          Next i

          Text3. Text = Str(Sum)

      End Sub

    3. (3) 加框处的程序代码有错,应改为

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