当前位置: 高中信息技术 / 综合题
  • 1. 某地区中考录取采用“平行志愿”的投档录取方式,该录取方式的具体规则为:

    ①根据考生的考试总分从高到低依次对考生的填报志愿进行投档;

    ②每位考生可填三个志愿学校,轮到该考生投档时依次对其三个志愿进行投档,若第一志愿学校还有剩余招生名额,就被第一志愿学校录取,结束该考生的投档,否则需对其后续志愿学校进行同样的投档操作,若该考生所填的所有志愿学校都没有剩余招生名额,则该考生无法被任何学校录取,该考生的投档结束。

    ③当所有学校都已完成计划招生数时,停止投档,录取结束。

    编写 VB 程序,实现上述“平行志愿”投档录取的功能,单击“读取考生数据”按钮 Command1, 则从数据库中获取所有考生的成绩、志愿信息以及每个学校的计划招生数,单击“投档录取”按钮 Command2,开始进行投档录取, 并在列表框 List1 中输出每个学校的计划招生数、实际招生数、录取分数线和最低录取名次信息,程序运行界面如图所示。请回答下列问题:

    1. (1) 若A校计划招生520人,B校计划招生480人,C校计划招生540人,某同学的考分名次为490名,其三个志愿学校依次为B校、A校、C校,且已知同名次的人数最多有30人,则该同学不可能被哪所学校录取:
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

      Const schCnt = 5                     '学校数量

      Const stuMaxCnt = 10000             '最多考生人数

      Dim zsCnt(1 To schCnt) As Integer      '存储每个学校的计划招生人数

      Dim zsCnt2(1 To schCnt) As Integer     '存储每个学校的实际招生人数

      Dim a(1 To stuMaxCnt) As Single       '存储考生总分成绩

      Dim b(1 To stuMaxCnt * 3) As Integer    '存储考试志愿,每个考生有3个志愿,每个志愿为学校编号

      Dim stuCnt As Integer                  '实际考生总人数

      Private Sub Command1_Click()

      '从数据库中读取所有考生的总分和志愿信息存储到数组a和数组b中(第1个考生总分存储到a(1),第1个考生的3个志愿分别存储到b(1)、b(2)、b(3)中, …),然后按总分对数组a和数组b进行降序排序,总分相同时,需根据各科成绩决定排序先后,但名次相同,考生总人数存储到stuCnt变量中;

      '读取每个学校的计划招生数,存储到数组zsCnt中;

      '以上功能代码略

      End Sub

      Private Sub Command2_Click()

        Dim sch As Integer         '学校代码,用1~5中的一个数字表示某学校代码

        Dim i As Integer, j As Integer, finished As Integer, prevScore As Single

        Dim stuMc(1 To stuMaxCnt) As Integer

        Dim MinScore(1 To schCnt) As Single

        Dim MinMc(1 To schCnt) As Integer

        finished = 0: i = 1

        prevScore = -1

        Do While

          If a(i) = prevScore Then

            stuMc(i) = stuMc(i - 1)

          Else

            

          End If

          prevScore = a(i)

          For j = 1 To 3

            

            If zsCnt2(sch) < zsCnt(sch) Then

              zsCnt2(sch) = zsCnt2(sch) + 1

              MinScore(sch) = a(i)

              MinMc(sch) = stuMc(i)

              Exit For

            End If

          Next j

          finished = 0

          For j = 1 To schCnt

            If zsCnt2(j) = zsCnt(j) Then

              finished = finished + 1

            End If

          Next j

          i = i + 1

        Loop

      '在List1中输出每所学校的代码、计划招生数、实际招生数、录取分数线、最低录取名次,代码略

      End Sub

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