当前位置: 高中信息技术 / 综合题
  • 1. (2021·浙江模拟) 某校举办技术学科统测,参加统测的每个学生有班级序号、姓名(字母缩写)和统测的技术成绩。现需整理统测数据,要求是:先按班级序号从小到大排列;然后,同一班级的学生按技术成绩从大到小排列。按上述要求,编写一个VB程序,功能如下:在列表框List中显示整理前的数据,单击“整理”按钮Commandl1,整理结果显示在列表框List2中,程序运行界面如图所示。

    1. (1) 将数组元素d(1)到d(640)分为16段,如果每段恰好包含40个元素,采用选择法排序算法分别对每段中的元素进行排序,整个排序过程中,数组元素之间的比较次数是    (单选,填字母:
      A . 640×639/2次/ B . 16×40×39/2次/ C . 40×16×15/2次)。
    2. (2) 请在划线处填入合适的代码。

      Const n=640   '参加统测总学生数

      Const nc =16  '班级数

      Dim class(1 To n) As Integer, sname(1 To n)As String, score(1 To n) As Integer

      Dim b( To nc) As Integer        '存储每个班级的参加统测人数

      Dim c(1 To nc) As Integer

      Dim d(1 To n)As Integer

      Private Sub Form_Load()

          '本过程读取每个参加统测学生的班级序号、姓名和统测成绩分别存储在数组class,sname和 score中并在List1中显示,代码略

      End Sub

      Private Sub Command1_Click()

          Dim i As Integer, j As Integer, k As Integer

          For i = 1 To nc

              b(i) = 0

          Next i

          For i = 1 To n           '统计每个班级统测人数

                

          Next i

          k = 1

          For i = 1 To nc

              c(i) = k

              k = k + b(i)

          Next i

          For i = 1 To n

              k = class (i)

              

              c(k) = c(k) + 1

          Next i

          For i = 1 To nc        '对各班级按统测成绩进行排序

              Call px(),c(i)-1))

          Next i

          For i = 1 To n

              List2.AddItem " " & class(d(i)) & " "& sname (d(i)) & " " & score(d(i))

          Next i

      End Sub

      Private Sub px(head As Integer, tail As Integer)

          Dim i As Integer, j As Integer, t As Integer

          For i = head To tail - 1

              For j = tail To i + 1 Step -1

                  If Then

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

                  End If

              Next j

          Next i

      End Sub

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