试题

试题 试卷

logo

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

浙江省杭州市2016年信息技术高考模拟卷十

【加试题】某校举行班班有歌声比赛,参赛班级的成绩按照班级序号保存在“bbygs.accdb”数据库文件中,为了快速计算每个班级最终的分,设计了一个VB程序,该程序能够将8个评委的打分按照从高到低的顺序排序,然后去掉一个最高分和一个最低分,最后计算平均值作为参赛班级的成绩。程序界面如图:单击“提取”按钮Command1,在列表框list1中显示班级序号和该班级8个评委的打分成绩,单击“排序”按钮Command2后,在列表框list2中按降序排序。单击计算得分按钮Command3,在文本框text1中显示最终成绩。按此要求编写程序如下:

Dim class(1 To 30) As Integer '存放班级序号的数组定义为class

Dim score(1 To 8) As single '存放班级各评委打分的数组定义为score

Private Sub Formload()      '提取某班级的评委打分

   Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

   conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\bbygs.accdb "

   conn.Open

   Set rs.ActiveConnection = conn

   rs.Open "SELECT * FROM score " 

   n = 0

Do While Not rs.EOF   '到最后一条记录后退出循环

   n = n + 1

   class (n) = rs.Fields("班级序号").Value

   score (n) = rs.Fields("评委打分").Value

   rs.MoveFirst      '①指针移动到下一条记录

Loop

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing

for i=1 to n

    List1.AddItem str(score(i))

Next i

End sub

Private Sub Command1Click()  

Dim i as integer

Dim j as integer

Dim t as single

For i = 1 to 8

  For j=1 to i

    If   ②  then  

t=score(j) 

score(j)=score(j+1)

score(j+1)=t

End if

  Next j

Next i

For i=1 to 8

   List2.AddItem str(score(i))

Next i

End sub

Private Sub Command2Click()   '计算班级平均得分

Dim i As Integer

Dim sum As single

For i=2 to 7

   sum=sum+score(i)

Next i

Text1.text=  ③ 

End sub

(1)、程序中①划线处有错,应改为
(2)、加矩形框处的程序所采用的算法是排序。
(3)、程序中②划线处应填入,程序中③划线处应填入
举一反三
原始的冒泡排序是单向的,它始终是从第一个(或最后一个)一个元素开始扫描。小王对冒泡排序进行了改进,从两端进行扫描,首先从数组的左端到右端进行扫描,把最大的数往后交换(以升序为例),再从右端到左端进行扫描,把最小的数往前交换,多次扫描后,最终得到一个有序的序列。他定义了left1、right1两个变量,变量left1表示左边指针,变量right1表示右边指针,每一遍排序,左边指针向右移动一位,右边指针向左移动一位。一趟排序,把最大值沉到最后一个,最小值冒泡到最前一个,最终让数组有序。运行界面如图a,单击“生成数据”按钮在列表框List1中显示生成的10个随机数,单击“排序”按钮后,将排序结果显示在列表框List2中。

实现上述功能的 VB 程序如下,请回答下列问题:

Dim b(1 To 10) As Integer

Dim left1 As Integer, right1 As Integer Private Sub Cd1_Click()

Dim i As Integer, j As Integer

  For i = 1 To 10

b(i) = Int(Rnd * 100) + 10 List1.AddItem Str(b(i))

  Next i left1 = 1 right1  = 10

End Sub

Private Sub Cd2_Click()

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

Do While left1 < right1

    For j = left1 To right1 - 1

    If b(j) > b(j + 1) Then

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

    End If

    Next j

    For j = right1 To    ‘改错

        If b(j) < b(j - 1) Then

            t = b(j): b(j) = b(j - 1): b(j - 1) = t end If

    Next j

    right1 =           ‘填空

Loop

‘将排序结果显示在列表表框List2中,代码略

End Sub

返回首页

试题篮