试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省丽水市2018-2019学年高二下学期信息技术期末考试试卷

小王编写了一个“学生体能情况分析”程序,其功能是分项计算名次和优秀率(分数90分及以上为优秀)。运行程序时,在列表框List1中显示所有学生的3项体能测试分数,在文本框Text1中输入测试项目代码(1表示游泳,2表示跑步,3表示跳远),单击“计算”按钮Command1后,计算结果分别显示在列表框List2和标签Label2中。程序运行界面如图1所示。

 

程序设计过程中数据的存储和计算方法如下:

⑴学生体能分数的存储:如图2所示,第1位学生的游泳、跑步、跳远分数依次存入数组score的第1、2、3个元素里,第2位学生的游泳、跑步、跳远分数依次存入数组score的第4、5、6个元素里,以此类推。

⑵计算名次的算法:先统计每个分数的个数,存入数组a,如图3中a(96)值为9,表示共有9个96分;然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次存入数组b,分数相同时名次并列,如图3中b(96)值为10,表示96分的名次是(并列)第10名,以此类推。

请回答下列问题:

(1)、根据图1中列表框List1中的信息和图2所示的数据存储方法可知,数组元素score(23)的值为(填数字)。
(2)、实现上述功能的VB程序如下,请在①、②、③的划线处填入合适的代码。

Dim m As Integer   ' 学生人数

Dim score(1 To 3000) As Integer  ' 存放学生分数

Dim xm(1 To 1000) As String  ' 存放学生姓名

Private Sub Command1_Click()

Dim i As Integer, t As Integer, code As Integer, mc As Integer

Dim a(0 To 100) As Integer  '存放每个分数的个数

Dim b(0 To 100) As Integer  '存放每个分数的名次

Dim code_n(1 To 3) As String

code_n(1) = "游泳" : code_n(2) = "跑步" : code_n(3) = "跳远"

code = Val(Text1.Text) 

For i = 0 To 100

  a(i) = 0

Next i

sum = 0

For i = 1 To m  '计算每个分数的个数及体能测试优秀的人数

  t =      ①       

  a(score(t)) = a(score(t)) + 1

  If score(t) >= 90 Then sum = sum + 1

Next i

mc = 1

For i = 100 To 0 Step -1  '计算每个分数的名次

  If a(i) <> 0 Then

    b(i) = mc

    mc =       ②          

  End If

Next i

List2.Clear

List2.AddItem " 姓名  " +        ③          + "  名次"

For i = 1 To m

  '在List2中输出m个学生的姓名、指定项目的分数及名次,代码略

Next i

sum = Int(sum / m * 10000 + 0.5) / 100

Label2.Caption = "优秀率是:" + Str(sum) +"%"

End Sub

Private Sub Form_Load()

’从数据库读取姓名存入数组xm,体能测试数据存入数组score,总人数存入变量m。

’代码略

End Sub

举一反三
小明利用所学的知识帮助语文老师设计一个语文学考等级查询系统,要求如下:输入某个等级,就能查出该等级的所有学生学号和姓名,并统计出该等级学生的人数,以便语文老师方便了解学生的学考情况。语文学考成绩分A、B、C、D、E五个等级,学生信息存储在数据库文件“stugrade.accdb”的数据表“Chinese”中,数据表“Chinese”的结构如图1所示。

VB程序运行界面如图2所示,在文本框Text1中输入查询的等级,单击“查询”按钮Command1,在列表框List1中显示所有该等级的学生学号和姓名,并按照学号从小到大排序,并在标签Label2处显示学生的人数,如果人数为0,则在列表框中显示“没有该等级的学生”。按此要求编写程序如下,但加框处代码有错误,请改正。

Private Sub Command1_Click()

Dim stuna(1 To 100) As String '存放学生姓名的数组定义为stuna

Dim stunum(1 To 100) As String '存放学生学号的数组定义为stunum

Dim i As Integer, j As Integer, n As Integer

Dim t As String


'连接数据库

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim strSQL As String

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

cn.Open

strSQL = "select * from Chinese where 语文等级='" + Text1.Text + "'"

Set rs.ActiveConnection = cn

rs.Open strSQL

n = 0

Do While Not rs.EOF

   n = n + 1

   stuna(n) = rs.Fields("姓名").Value

   stunum(n) = rs.Fields("学号").Value

   rs.NextMove          '①

Loop

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing


List1.Clear '清除列表框

If n = 0 Then

   List1.AddItem "没有该等级的学生"

Else

   For i = 1 To n - 1       '按姓名排序

      For j = n To i + 1 Step -1

         If stuna(j) < stuna(j - 1) Then       '②

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

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

         End If

     Next j

   Next i

   For i = 1 To n

      List1.AddItem stunum(i) + "  " + stuna(i)

   Next i

   Label2.Caption = "该等级的学生共有" + Str(n) + "名"

End If

End Sub

返回首页

试题篮