- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- + 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
程序功能如下:
在窗体加载时,从数据库中读取学生总数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 = 0For 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
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) |

实现该功能的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
程序中①处改为________________________________________。程序中②处改为________________________________________。

A.9 2 8 5 3 | B.9 5 8 2 3 | C.9 8 2 5 3 | D.9 2 8 3 5 |

(1)虚线内程序段所采用的排序算法名称是 。
(2)程序加框处代码有错,请改正。

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) = tEnd If
Next jNext i
数组元素 a(1)到 a(5)的值依次为“51,36,78,18,15”,经过该程序段“加工”后,数组元素
a(1)到 a(5)的值依次为( )
A.36,18, 51,78,15 | B.36,18,15,51,78 |
C.15,18,36,51,78 | D.36, 51,18,78,15 |

实现上述功能的 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
术平均值是中位数。
小诗收集了全市部分教职员工的工资数据,设计了找中位数的程序如下。小诗收集的人员工资数据放在了 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)如图所示,数据库中一共有___________个教职员工。

(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
执行该程序段后,数组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 |