组卷题库 > 高中信息技术试卷库
试题详情
小明接受了一个任务:要对照赋分表完成对本次高三技术摸底考试的卷面成绩赋分,赋分表数据如下:

赋分成绩

100

99

98

97

96

……

42

43

41

卷面成绩

90

88

86

85

83

……

30

30

30

赋分成绩最低40分,卷面成绩低于30分则赋0分。赋分表数据存人数组ffb,如ffb(100)=90,则表示卷面成绩90时,赋分100分。小明设计的赋分具体步骤如下:

第一步:对学生的卷面成绩进行降序排序;

第二步:对照赋分表,对每-名学生卷面成绩进行赋分。

小明编写了VB赋分程序,在列表框List1中显示学号和学生卷面成绩,在列表框List2中显示赋分表数据,单击按钮“我要赋分”后,按照之前的学号顺序在列表框List3中显示学号、卷面成绩和赋分成绩。VB程序界面如下:

Const m = 10000

Dim xh(1 to 10000) As String     '存储学生学号

Dim cj(1 To 10000) As Integer     '存储学生卷面成绩

Dim ffcj(1 To 10000) As Integer    '存储学生赋分成绩

Dim ffb(40 To 100) As Integer     '存储赋分表数据

Private Sub Form_ Load()

    '读入m名学生的学号、技术考试卷面成绩分别存人数组xh和cj中,并在List1中显示;读入赋分表成绩存人数组ffb中,代码略

End Sub

Private Sub Command1_ Click()

    Dim a(0 To 100) As Integer

    Dim b(0 To 100) As Integer

    Dim c(1 To 10000) As Integer

    List2.AddItem "赋分成绩卷面成绩"

    For i=100 To 40 Step-1     '在List2显示赋分表数据

        List2. AddItem Str(i)+ "" +Str( ffb(i))

    Next i

    For i=1 To m    '统计各分数段的人数

            ①   

        a(t)=a(t)+1

    Next i

    j= 100

    Do While a(j)=0

        j=j-1

    Loop

    b(j)=1

    For k=j- 1 To 0 Step -1

        b(k)=b(k+1) + a(k+ 1)

    Next k

    For i=1 To m

        t=cj(i)

        c(b(t))=i

            ②   

    Next i

    p=1:q= 100

    Do While p<=m

        If cj(c(p))> = ffb(q) Then

                ③   

            p=p+1

        ElseIf q=40 Then

            ffcj(c(p))=0

            p=p+1

        Else

            q=q-1

        End If

    Loop

    List3. AddItem "学号卷面成绩赋分成绩"

    For i=1 To m

        List3. AddItem xh(i)+" " + Str(cj(i)) + ""+Str(ffcj(i))

    Next i

End Sub

知识点
参考答案
采纳过本试题的试卷
教育网站链接