小胡收集了2018届高三学生高考成绩及相关的选科情况,存入数据库中,部分界面截图如图所示:

程序功能如下:

在窗体加载时,从数据库中读取学生总数N;读取N名学生的信息存储在相关数组中。N名学生的学号依次存储在数组xh(1)~xh(n) 中;学号为i的学生的总成绩存储在数组 zf(i)中,课程选修信息存储在xk(i)中;

点击“统计”按钮后,程序筛选出所有技术考生的相关信息,并计算该学生在所有技术考生中的排名(总分相同的,排名也相同)。

实现上述功能的VB程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Dim xh(1 To 1000) As Integer ’数据库中读取时第i为学生的学号存储在xh(i)
Dim zf(1 To 1000) As Integer ’学号为i的考生的总分存储在zf(i)
Dim xk(1 To 1000) As String ’学号为i的考生的选考课程信息存储在zf(i)
’ 数据格式 **-**-**  (如:物理-化学-生物)
Dim jspm(1 To 1000) As Integer   ’学号为i的技术选考生的总分在所有技术考生中的
’排名存储在数组jspm(i)
Private Sub Form_Load()
Dim conn   As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim  constr  as string , sql as string
Constr = "Provider=Microsoft.ace.OLEDB.12.0;"
Constr = constr &  "Data Source=" & App.Path + "\data\stu2018.accdb"
conn.ConnectionString = constr
conn.open( )
rs.Open  "select * from 2018cj  "  ,  conn
i=0
Do While Not rs.EOF
i=i+1
xh(i)=rs(“xuehao”)
zf(rs(“xuehao”)) = rs(“fenshu”)
xk(rs(“xuehao”))=rs(“xkinfo”)
【小题1】
Loop
N=i
End Sub
’判断选科信息info中是否包含科目km 
Function YouKM(ByVal km As String, ByVal Info As String) As Boolean
Dim km1 As String
YouKM = False
For i = 1 To 3
If 【小题2】 Then
YouKM = True
Exit For
End If
Next i
End Function
'为技术学科考试求名次
Private Sub Command1_Click()

Dim jsinfo(1 To 1000) As Integer    ’依次存储每个技术选考生的学号和成绩

Dim k as integer    ’存储找到的技术选考学生的数量

'将所有选考“技术”的考生学号、成绩依次存入数组jsinfo中

    k = 0
For i = 1 To n
If    【小题3】 Then
k = k + 1
jsinfo(2 * k - 1) = xh(i)
jsinfo(2 * k) = cj(xh(i))
End If
Next i
'学号为i的学生在技术选考生中的排名,存入jspm(i)中
For i = 1 To k
mc = 0
For j = 1 To k
If jsinfo (2 * j) > jsinfo (2 * i) Then mc = mc + 1
Next j
jspm(jsinfo(2*i-1))= 【小题4】

Next i

   '输出所有技术考试的学号、成绩、技术排名信息 代码略
End Sub
当前题号:1 | 题型:填空题 | 难度:0.99
下列VB程序段的功能为:生成n个不重复的随机整数,保存在数组a中,并升序排序。
Const n = 6
Dim a(1 To n) As Integer, f(1 To 10) As Boolean
Dim tmp As Integer, i As Integer, j As Integer, t As Integer
’f数组各元素的初值置为False,代码略
For i = 1 To    (1)  
t = Int(1 + Rnd * 10)
If Not f(t) Then
a(i) = t : f(t) = True
For j = (2)   
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
End If
Next j
Else
(3)  
End If
Next i
上述程序段3个方框处的表达式分别为
A.(1)n - 1 (2)2 to i    (3)i = i - 1
B.(1)n (2)i to 2 Step -1    (3)i = i - 1
C.(1)n - 1    (2)2 to i    (3)t = Int(1 + Rnd * 10)
D.(1)n (2)i to 2 Step -1    (3)t = Int(1 + Rnd * 10)
当前题号:2 | 题型:选择题 | 难度:0.99
数组nam()、sex()、math()、su()分别存放学生的姓名、性别、数学和总分成绩,现要求编写一个程序使得数据按照男生“总分”的降序和女生“总分”的升序排列,其中男生在前女生在后,程序界面如下图所示:

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

Dim nam(100) As String '存放学生姓名

Dim sex(100) As String '存放学生性别

Dim math(100) As Long '存放学生数学成绩

Dim su(100) As Long '存放学生总分成绩

Dim k As Integer 'k变量用来存学生人数

Private Sub Form_Load()

‘将数据库中的数据分别存储在相应的变量中并在列表框中显示出来

‘代码略

End Sub

Private Sub Command1_Click()

Dim mmax As Integer, gmax As Integer, flagm As Boolean, flagg As Boolean

i = 1: flagm = True: flagg = True

Do While i <= k And flagm = True ①   

    mmax = 0: gmax = 0

    flagm = False: flagg = False

  For j = i To k - i + 1

    If sex(j) = "男" And su(j) > su(mmax) Then mmax = j

    If sex(j) = "女" And su(j) > su(gmax) Then gmax = j

  Next j

   If mmax <> 0 Then

flagm = True

t = nam(mmax): nam(mmax) = nam(i): nam(i) = t

t = sex(mmax): sex(mmax) = sex(i): sex(i) = t

t = math(mmax): math(mmax) = math(i): math(i) = t

t = su(mmax): su(mmax) = su(i): su(i) = t

   End If

   If gmax <> 0 Then

flagg = True

If j = mmax Then    ②   

gmax = mmax

t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

t = math(gmax): math(gmax) = math(i): math(i) = t

t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

Else

t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

t = math(gmax): math(gmax) = math(k - i + 1): math(k - i + 1) = t

t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

End If

   End If

i = i + 1

Loop

For i = 1 To k

List2.AddItem nam(i) + "    " + sex(i) + "    " + Str(math(i)) + "    " + Str(su(i))

Next i

End Sub

程序中①处改为________________________________________。
程序中②处改为________________________________________。
当前题号:3 | 题型:填空题 | 难度:0.99
有一组数,依次为3、2、8、5、9,若采用选择排序算法对其进行从大到小排序,其中排序方向为从前向后,则第二趟的排序结果是:
A.9  2  8  5  3B.9  5  8  2  3C.9  8  2  5  3D.9  2  8  3  5
当前题号:4 | 题型:选择题 | 难度:0.99
下列程序的功能是对某校2011年3月份技术高考成绩进行排名分析,数组a中保存学生技术考试的成绩,数组b中保存学生的姓名,第i个学生的技术成绩保存在a(i)中,对应的学生姓名保存在b(i)中,最后按技术成绩从高到低进行排序。程序界面如图所示,左边列表框List1中显示的是所有学生到的原始数据,单击"排序"按钮(Command1)后,在右边的列表框List2中显示排序完成后的结果(按成绩从高到低排列)。

(1)虚线内程序段所采用的排序算法名称是
(2)程序加框处代码有错,请改正。
当前题号:5 | 题型:填空题 | 难度:0.99
(加试题)有以下 VB 程序段
For i = 1 To 2
For j = 1 To 4-i

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

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

End If

Next j
Next i
数组元素 a(1)到 a(5)的值依次为“51,36,78,18,15”,经过该程序段“加工”后,数组元素
a(1)到 a(5)的值依次为(   )
A.36,18, 51,78,15B.36,18,15,51,78
C.15,18,36,51,78D.36, 51,18,78,15
当前题号:6 | 题型:选择题 | 难度:0.99
(加试题)某活动要从 100 名参赛者中选出成绩最高的前十名给予一定的奖励。活动组织者编写了如下程序,功能是根据成绩进行排序,程序中数组 a 保存所有参赛者的组次,数组 b 保存对应的成绩,如第 1 位参赛者的组次 1 保存在 a(1)中,成绩保存在 b(1)中。程序界面如图所示,左边列表框 List1 中显示原始数据(序号和相应的成绩),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示前 10 名选手的序号和成绩在列表框 List2 中,若最后一名成绩有相同的也一起输出。界面如下图所示:

实现上述功能的 VB 程序如下,但划线处代码有错,请改正。
Const n=100
Dim a(1 To n) As Integer
Dim b(1 To n) As Integer
Private Sub Form_Load()    '窗体被加载时
‘获取原始数据,将参赛者序号和最后得分分别存在数组 a 和数组 b 内,并在列表框 List1 中显示。代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, temp As Integer
List2.Clear
For i = 1 To 10 k = i
For j = 10 To i+1   ‘________
If b(k) < b(j) Then k = j
End If
Next j
If k <> i Then
temp = b(i): b(i) = b(k): b(k) = temp temp = a(i): a(i) = a(k): a(k) = temp
End If
List2.AddItem Str(a(i)) + "    " + Str(b(i)) Next i
m = 10
For i = 11 To n
If   b(i) = b(i-1)    then    ‘________
m = m + 1
List2.AddItem Str(a(i)) + "    " + Str(b(i)) End If
Next i
Label3.Caption = "本次十佳歌手一共有" + Str(m) + "组"
End Sub
当前题号:7 | 题型:填空题 | 难度:0.99
统计学中的“中位数”是这样的一种数:一组数据里的一半的数据比它大,而另外一半数据比它小。计算一组数据的中位数的方法是:把所有数据按照非升的次序排列。如果数据的个数是奇数,则中间那个数就是这组数据的中位数;如果个数是偶数,则中间两个数的算
术平均值是中位数。

小诗收集了全市部分教职员工的工资数据,设计了找中位数的程序如下。小诗收集的人员工资数据放在了 Access 数据库中。小诗的程序在窗体加载时读出了所有人员的数据:姓名放在数组a中,对应的工资放在数组b中,数据总记录数放在n中。单击按钮 Command1后先以工资按非升的次序排序,然后找出中位数。

(1)要使程序运行时,从数据库中读取所有人员的数据,可在_____________事件过程中添加相关代码。(单选,填字母:
A.Form1_load/B.Form_load/C.Form1.Caption)

Dim a(1 To 1000) As String
Dim b(1 To 1000) As Single
Dim n As Integer

‘数据库读取所有人员的数据代码略

Private Sub Command1_Click()

Dim i As Integer , j As Integer , k As Integer

Dim tmp1 As Single,tmp2  As String

Dim median As Single

For i = n To 2 step -1

k = i

For j = i-1 To 1 step -1

If b(j) > b(i) Then

k = j

End If

Next j

If k <> i Then

tmp1 = b(k): b(k) = b(i): b(i) = tmp1

tmp2 = a(k): a(k) = a(i): a(i) = tmp2

End If

Next i

For i = 1 To n

List1.AddItem Str(i) & " " & a(i) & " " & Str(b(i))

Next i

If n Mod 2 = 0 Then

median =________

Else

median = b(n\2+1)

End If

Label1.Caption = "中位数是:" & Str(median)

End Sub
(2)将划线处代码补充完整。
(3)程序代码中,加框处有错,请改正。___________
(4)如图所示,数据库中一共有___________个教职员工。
当前题号:8 | 题型:填空题 | 难度:0.99
在Excel中进行数据排序,先按主关键字进行排序,主关键字相同的记录再按次关键字进行排序。编写一个VB程序,功能如下:在文本框Text1中随机产生100个两位数的正整数作为主关键字,在文本框Text2中随机产生100个两位数的正整数作为次关键字,单击“排序”按钮Command1,在列表框List1中显示排序后的结果(主、次关键字均为降序)。程序运行界面如图所示。

(1)观察代码,该排序过程中,交换次数最多能达到______________次。
(2)实现上述功能的VB程序如下,请在划线处填入正确语句。
Dim z(1 To 100) As Integer
Dim c(1 To 100) As Integer
‘文本框获取主、次数组数据代码略
Private Sub Command1_Click()

Dim i As Integer, j As Integer

i = 1

Do While i <= 99

j = 100

Do While  _______

If z(j) > z(j - 1) Or _____________Then

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

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

End If

j = j - 1

Loop

________

Loop

List1.AddItem " " + "主" + " " + "次"

For i = 1 To 100

List1.AddItem Str(z(i)) + Str(c(i))

Next i

End Sub
当前题号:9 | 题型:填空题 | 难度:0.99
有如下VB程序段:

执行该程序段后,数组a(1)到a(6)的数据依次是( )
A.Delphi  Java  Pascal  Python  VB  Swift
B.VB  Swift  Python  Pascal  Java  Delphi
C.VB  Swift  Python  Java  Pascal  Delphi
D.Java  Pascal  Delphi  Python  Swift  VB
当前题号:10 | 题型:选择题 | 难度:0.99