试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省教育绿色评价联盟2020届高三信息技术6月适应性考试试卷

某次技术考试后进行成绩处理,学生信息包括姓名、班级、成绩,要按班级从小到大,同一班级按成绩从高到低进行排序。按上述要求,编写一个VB程序,功能如下:在列表框List1中显示排序前的数据,单击“排序”按钮Command1,在列表框List2中显示排序后结果,程序运行界面如图所示。

(1)、  将数组元素temp1(1)到temp1(500)分为10段,每段刚好存储一个班的学生成绩,10个班的学生数如下表所示。从数组temp1第1个元素开始依次存储这10个班的学生成绩,如1班学生成绩存储在temp1的第1个元素到第50个元素,则3班学生成绩存储在temp1的第个到第个元素(填数字)。

班级

1班

2班

3班

4班

5班

6班

7班

8班

9班

10班

人数

50

45

50

51

49

55

50

48

52

50

(2)、请在划线处填入合适的代码。

Const n = 500     '总学生数

Const m = 10     '总班级数Dim score(1 To n) As Integer

Dim stu_name(1 To n) As Integer Dim class(1 To n) As Integer Dim temp1(1 To n) As Integer Dim temp2(1 To n) As Integer Dim temp3(1 To n) As Integer Function adj(s As String)

'本函数在字符串s 前添加若干空格,实现右对齐,代码略

End Function

Private Sub Form_Load()

'本过程读取学生姓名、班级和成绩数据分别存储在数组stu_name,class 和score 中,

'并在 List1 中显示,代码略

End Sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, k As Integer, t1 As Integer, t2 As String

    Dim c(0 To m + 1) As Integer

    For i = 0 To m

        c(i) = 0

    Next i

    For i = 1 To n

       

        c(k) = c(k) + 1

    Next i

    For i = 1 To m

        c(i) = c(i) + c(i - 1)

    Next i

    For i = n To 1 Step -1

        k = class(i)

        temp1(c(k)) = score(i)

        temp2(c(k)) = stu_name(i)

        temp3(c(k)) = class(i)

       

    Next i        '处理完毕 c(i+1)表示第 i 个班级的最后一个学生的存储位置

    c(m + 1) = n

    For k = 1 To m        '对每一个班级学生成绩进行排序For i = c(k) + 1 To c(k + 1) - 1

        For j = c(k + 1) To i + 1 Step -1

            If Then

                t1 = temp1(j): temp1(j) = temp1(j - 1): temp1(j - 1) = t1

                t2 = temp2(j): temp2(j) = temp2(j - 1): temp2(j - 1) = t2

                t1 = temp3(j): temp3(j) = temp3(j - 1): temp3(j - 1) = t1

            End If

        Next j

    Next i

Next k

For i = 1 To n

    score(i) = temp1(i): stu_name(i) = temp2(i): class(i) = temp3(i)

    List2.AddItem adj(Str(stu_name(i))) & adj(Str(class(i))) & adj(Str(score(i)))

    Next i

End Sub

举一反三
【加试题】小李要给全班学生拍合照,要求所有学生站成一排,中间高,两端低,小李采用如下排队方法:按身高信息从高到低排序,让身高第一位的同学单独站出来,身高第二位同学站在他的左手边,身高第三位同学站在他的右手边,再依次向两端安排其他人。每个学生的学号与身高信息已存人数据库中。小李编写了VB程序,从数据库中读取学号和身高信息,在“原始信息”下方的列表框List1中显示,单击“排队”按钮Command1,在“排好的队形”下方的列表框List2中显示排好的队形,程序界面如图所示。

实现上述功能的VB程序如下,但加框处代码有错,请改正。

  Const maxn=100

  Dim id(1 To maxn)As Integer     ‘存储每个学生的学号

  Dim tall(1 To maxn)As Single     ‘存储每个学生的身高

  Dim n As Integer                ‘存储学生的个数

  Private Sub Form_Load()

  ‘从数据库得到学生的总人数n

    ‘从数据库读取学号信息,并存入id数组中

    ‘从数据库读取身高信息,并存入tall数组中

    ‘在列表框List1中显示学号与身高

  End Sub

  Private Sub Command1_Click()

  Dim a(1 To maxn)As Integer    ‘存储排好队形的学号

  Dim b(1 To maxn)As Single     ‘存储排好队形的身高

  Dim i As Integer,j As Integer

  Dim t1 As Integer,tr As Integer,mid As Integer

  Dim tmp1 As Single,tmp2 As Integer

  For i=1 To n-1

    For j=n To i+1 Step-1

      If  Then        ‘(1)

        tmp1=tall(j):tall(j)=tall(j-1):tall(j-1)=tmp1

        tmp2=id(j):id(j)=id(j-1):id(j-1)=tmp2

      End If

     Next j

    Next i

    If n Mod 2=0 Then     ‘根据总人数的奇偶性,确定队形的中间位置

       mid=n\2+1

    Else

       mid=(n+1)\2

    End If

    ‘身高第一位的同学,安排在队形的中间位置

    a(mid)=id(1)

    b(mid)=tall(1)

    t1=mid-1

    tr=mid+1

    For i=2 To n

      If  Then           ‘(2)

        a(tr)=id(i)

      b(tr)=tall(i)

      tr=tr+1

    Else

      a(t1)=id(i)

      b(t1)=tall(i)

      t1=t1-1

     End If

    Next i

    List2.AddItem“位置”+“学号 ”+“身高”

    For i=1 To n

      List2.Addltem Str(i)+”  ”+Str(a(i))+”  ”+Str(b(i))

    Next i

  End Sub

返回首页

试题篮