题库 高中信息

题干

小李编写一个统计学生选考科目的VB 程序,算法的基本思想是:检查每位学生选课组合的编码是否有效,对有效选择结果进行科目统计,根据各科次占有效人数的百分率求出各科排名。程序运行时,单击“显示”按钮 Commmad1,学生选课数据显示在列表框 list1 中,各科编号及对应科目名称显示列表框 list2 中,单击“统计”按钮 Commmad2,选课结果按各科百分率由高到低显示在列表框 list3 中,程序运行结果如图所示。
 
实现上述功能的 VB 程序如下,请回答下列问题:
(1)学生选课的编码数据存储在数据表中,其字段名为________。
(2)请在划线处填入合适的代码.
Dim ach(1 To 500) As String    '存储各学生选课编码 Dim bno(1 To 10) As Integer '存储各科目编号
Dim bname(1 To 10) As String    '存储各科目名称
Dim bnum(1 To 10) As Integer   '存储各科目被选次数 Dim bmc(1 To 10) As Integer '存储各科目被选的名次
Dim n As Integer, num As Integer Private Sub Command1_Click()
Dim i As Integer, km As String
km = "物理化学生物政治历史地理技术"
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sql As String
cn.Open "provider=Microsoft.Jet.oledb.4.0;Data Source=" + App.Path + "\students.mdb"
rs.Open "select * from choose", cn
Do While Not rs.EOF
n = n + 1 : ach(n) = rs.Fields("subject") : rs.MoveNext Loop 
rs.Close    
cn.Close 
Set rs = Nothing Set cn = Nothing
For i = 1 To 7
bno(i) = i 
bname(i) = Mid(km, (i - 1) * 2 + 1, 2)
List2.AddItem Str(bno(i)) + "---" + bname(i) Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, k As Integer Dim c As String, per As Integer
For i = 1 To n
If check(ach(i)) = True Then
For j = 1 To 3
c = Mid(ach(i), j, 1)
bnum(Val(c)) =_______ ’统计科目被选次数
Next j
num = num + 1
End If Next i
i = 1    
Do While i <= 7 '该循环得到各学科被选人数的名次

bmc(i) = 1

    For j = 1 To 7
If bnum(j) > bnum(i) Then  _______ ’通过比较有多少个数比当前的数大
’得到该数在数组中的排名
Next j
i = i + 1 Loop
For i = 1 To 7
For j = 1 To 7
If _______ Then ’按名次输出
per = Int(bnum(j) * 100 / num * 100) / 100
List3.AddItem Str(bno(j)) + "---" + bname(j) + "---" + Str(per) + "%"
End If
Next j Next i
End Sub
Function check(s As String) As Boolean
'代码略! 若学生选科代码有效,函数返回 True,否则返回 False End Function
上一题 下一题 0.99难度 填空题 更新时间:2019-05-28 08:39:43

答案(点此获取答案解析)

同类题3

小刘在玩一个数字游戏,给定一个n位正整数(n<=20),根据设定的保留位数,舍去一部分数字,剩下的数字按原次序组成一个最大的新数。例如原数34625803,保留4位,最大数为6803。算法是:先确定最高位的数字,在第1位至最后3位数字前的34625中找到最大的数6,从而确定最高位是6,再确定次高位的数字,从6后面的数开始到最后2位数字前的258中找到最大数8,确定次高位是8,依次找下去得到最大新数。他设计了一个VB程序来进行验证,在文本框Text1中输入一个n位正整数,在文本框Text2中输入保留的位数,点击“确定”按钮,在文本框Text3中输出保留的最大新数。程序运行界面如图所示。

(1)如果输入的原数是3635132,保留4位数字,则输出的新数是  。
(2)实现上述功能的VB代码如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim a(1 To 20) As String
Dim ys As String, xs As String 'xs记录最大的新数
Dim k As Integer, h As Integer, n As Integer
Dim i As Integer, j As Integer
Dim F As Boolean
xs = ""
ys = Text1.Text
n = Len(ys)
k = Val(Text2.Text)
F = True
If ys = "" Or n > 20 Or k =" 0" Or k > n Then
Label4.Caption = "输入的原数或保留位数不符,请重输!"
F = False
End If
For i =" 1" To n
①    
If a(i) < "0" Or a(i) > "9" Then
Label4.Caption = "输入的原数不是数字,请重输!"
Text1.Text = ""
F = False
End If
Next i
If F =" True" Then
h = 1
For i =" 1" To k
For j =" h" To     ②   
If a(j) > a(h) Then h = j
Next j
xs =" xs" + a(h)
h =" h" + 1
Next i
Text3.Text = xs
End If
End Sub

同类题4

某数据压缩方法描述如下:
1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示:
2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,均为0;
3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个数为该数本身。
原始数据:25  0  78  78  78  78  78  78
压缩数据:25  0 0 0  6  78
程序运行界面如下图所示:

根据上述算法,小明编写如下VB程序。
(1)若文本框Text1中输入数据为“0,25,0,78,78,0,0”(不含引号),点击“压缩”命令按钮,在文本框Text2输出数据里有 个0。
(2)实现上述功能的VB程序如下。请在划线处填入合适代码。
Dim a(1 To 100) As Integer, b(1 To 100) As Integer, c(1 To 100) As Integer
Dim n As Integer, num As Integer
Private Sub Init1()
Dim s1 As String, c1 As String
Dim i As Integer, t As Integer, len1 As Integer
n = 0: t = 0: s1 = Text1.Text
len1 = Len(s1)
For i = 1 To len1
ch = Mid(s1, i, 1)
If ch <> , Then
   
Else
n = n + 1: a(n) = t: t = 0
End If
Next i
n = n + 1: a(n) = t
End Sub
Private Sub Command1_Click()
Call Init1
Dim pa As Integer, pb As Integer
Dim firstdata As Integer, count As Integer, i As Integer
pb = 1
firstdata = a(1)
n = n + 1
a(n) = a(n - 1) + 1
count = 1
For i = 2 To n
If a(i) = firstdata Then
    count = count + 1
Else
If count = 1 Then
If firstdata > 0 Then
b(pb) = firstdata: pb = pb + 1
Else
b(pb) = 0: b(pb + 1) = 0: pb = pb + 2
End If
Else
b(pb) = 0
b(pb + 1) = count
   
pb = pb + 3
End If
count = 1
firstdata = a(i)
End If
Next i
Text2.Text = Str(b(1))
For i =
Text2.Text = Text2.Text + , + Str(b(i))
Next i
End Sub