- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- + 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
小杰为学校教务处编写了一个排考场座位的VB程序,考场采用“6排5列”共30人的模式,程序执行后,考生的考号与姓名显示在列表框List1中,单击“考场座位”按钮,考场号与座位显示在Text1中,程序运行界面如图所示,数据表如图


实现上述功能的VB程序如下,请回答下列问题:
(1)程序中读取的数据库文件是____________
(2)当“Form_load() 事件处理过程运行结束后,变量x的值为___________
(3)请在划线处填入合适的代码
Dim sName(100) As String
Dim kh(100) as string
Private Sub Command1_Click()
Dim y As Integer
Dim start As Integer '考场第1位数据元素的下标
Dim pa As Integer '数据库导入VB时学生数据下标
Dim pb As Integer '考场座位数据下标
Dim i As Integer,j As Integer,k As Integer,m As Integer
Dim kcsName(100) As String
start = 1
pa = start
recCount = x-1
If recCount Mod 30 <> 0 Then

For i = 1 To y '将当前考生人数添加到30的整数倍
recCount = recCount +1
sName(recCount) = " "
Next i
End If
For j = 1 To recCount / 30
pa = start
pb = start
For i = 1 To 30
kcsName(pb) = sName(pa)
pb = pb +1
If i Mod 5 = 0 Then
pa = start +i \5
Else

End If
Next i
start = start +30
Next j
Text1.Text = " "
start = 1
For k = 1 To recCount /30
m = start
Text1.Text = Text1.Text + "第" + Str(k) + "考场" + vbCrLf
'vbCrLf为换行标志符,实现Text1中内容换行显示
For i = 1 To 6
For j = 1 To 5
Text1.Text = Text1.Text +" " +kcsName(m)
m = m +1
Next j
Text1.Text = Text1.Text +vbCrLf
Next i
Text1.Text = Text1.Text +vbCrLf +vbCrLf

Next k
End Sub
Private Sub form_load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" & App.Path & "/kaochang.accdb"
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from banji"
x = 1
List1.AddItem " 考号 姓名"
Do While Not rs.EOF '
kh(x) = rs.fields("kh")
sName(x) = rs.fields("xm")
List1.AddItem kh(x) + " " + sName(x)
x = x + 1
rs.MoveNext
Loop
rs.Close
End Sub
“中国好声音”节目组要小杰用VB编写一个程序:现场将有900个观众,要在900个观众中产生10个中奖号码的程序,每位观众用三位数字进行编号,要求产生的10个号码不能重复,并且升序排列输出。
①检查产生号码是否重复:把产生的中奖号码放在数组a中,新产生的号码与已经产生的号码进行一一对比,如果找到相等的数,则重新产生新号码。
②找到新产生号码存放的数组下标:从下标为1的数组元素开始,新号码(第i个号码)分别与他们进行一一比较,找到第一个比新号码大的数,该数所在的下标就是新号码应存放的下标。如果在已经产生的数中没有找到比新号码大的数,则新号码应存放在下标为i的数组元素中。下表以产生第5个号码为例,如果产生的号码是130,第一个比他大的数是a(2),下标为2的数组元素应存放新号码;如果产生的号码是300,则新号码应存放在下标为5的数组元素中。

③移动数组元素到新的位置:如果在已经产生的号码中找到比新号码大的数,从上一个产生的号码开始,到新号码应存放的数组元素,依次把他们向后面移动。以②中产生130为例,从a(4)开始,让a(5)的值等于a(4),a(4)的值等于a(3),依次类推,直到新号码应存放的数组元素a(2)为止。
④将新产生的号码放在相应的数组元素中。
程序运行的界面如下图所示,实现上述功能的VB程序代码如下:

Dim a(10) As Single
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim temp As Single, k As Integer 'temp产生随机数,k随机数存放数组元素的下标
Randomize
a(1) = Int(Rnd() * 900 + 100)
For i = 2 To 10
temp = Int(Rnd() * 900 + 100)
If seach(temp, i - 1) = True Then
i = i - 1
Else
k = i
For j = 1 To i - 1
If ①temp < a(i) Then k = j: Exit For
Next j
For j = i - 1 To k Step -1
a(j + 1) = a(j)
Next j
②
End If
Next i
List1.Clear
For i = 1 To 10
List1.AddItem Str(a(i))
Next i
End Sub
'函数实现在数组a中,从下标为1的数组元素到下标为t数组元素,查找有无s的数值
Function seach(s As Single, t As Integer) As Boolean
Dim i As Integer
seach = False
For i = 1 To t
If ③ Then seach = True: Exit For
Next i
End Function
(1)程序代码中①划线处有错,应改为:___________________
(2)程序代码中划线处②应填入_________________________
(3)程序代码中划线处③应填入_________________________
i=6 : flag=True
Do While i>=4 And flag=True flag=False
k=i
For j=1 To i-1
If a(k)>a(j) Then k=j
Next j
If k<>i Then
t=a(i) : a(i)=a(k) : a(k)=t flag=True
End If
i=i-1
Loop
数组元素 a(1)到 a(6)的值依次为“24,7,37,45,11,52”,经过该程序段“加工”后, 数组元素 a(1)到 a(6)的值依次为( )
A.7,11,37,45,24,52 | B.45,52,37,24,11,7 |
C.7,11,24,45,37,52 | D.24,52,37,45,11,7 |
按学号登录系统进行预约(学号编码为六位数字,第一二位代表年级,第三四位代表班级,第五 六位代表顺序号。如 030102 表示高三 1 班 2 号同学)。为了方便老师管理,预约结束由电脑进行 排位。排位规则如下:
①年级优先原则,先高三再高二最后高一
②班号优先原则,同年级的班号小的排前面
③序号优先原则,同班级同学序号小的排前面 小张根据以上要求编写了 VB 程序,程序界面如下图所示:

实现上述功能的 VB 程序代码如下,请回答下列问题:
⑴分析程序,可知调用的数据库的名称为____________________________________。
⑵请在划线处填入合适的代码。
Dim a(200) As String
Const num = 200
Dim temp As String
Private Sub Form_Load() ‘此处代码实现将预约信息存储到数组 a(i)中
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "provider=Microsoft.AC
A.OLEDB.12.0;data source=" & App.Path & "\" &"stu.accdb" |
i = 1
Do While Not rs.EOF
a(i) = rs("xuehao")
rs.MoveNext
①____________
Loop
rs.Close
cn.Close
List1.AddItem "预约号" & " " & "学号"
For i = 1 To num
List1.AddItem Str(i) & " " & a(i)
Next iEnd Sub
Private Sub Command1_Click()
For i = 1 To num - 1
For j = num To i + 1 Step -1
If ②____________ Then
temp = a(j) a(j) = a(j - 1) a(j - 1) = temp
End If
Next j
Next iList2.Clear
List2.AddItem "座位" & " " & "学号"
For i = 1 To num
List1.AddItem Str(i) & " " & a(i)
Next i
End Sub
Function check(x As String, y As String) As Boolean
Dim x1 As Integer, x2 As Integer, x3 As Integer
Dim y1 As Integer, y2 As Integer, y3 As Integer
x1 = Val(Mid(x, 1, 2)) : x2 = Val(Mid(x, 3, 2)) : x3 = Val(Mid(x, 5, 2))
y1 = Val(Mid(y, 1, 2)) : y2 = Val(Mid(y, 3, 2)) : y3 = Val(Mid(y, 5, 2))
If x1 < y1 Or x1 = y1 And x2 > y2 Or ③__________ Then
check = True
Else
check = False
End IfEnd Function

实现上述功能的VB代码如下:
Dim a(1 To 8) As Integer
Dim n As Integer
Private Sub Form_Load()
'n=8,排序前数据存储在数组a中,并在列表框Listl中显示
'代码略
End Sub
Private Sub Command1_Click()
Dim flag As Boolean
i = 1
flag = True
Do While

flag = False
For j = n To i + 1 Step -1
If a(j) < a(j - 1) Then
k = a(j): a(j) = a(j - 1): a(j - 1) = k
flag = True
End If
Next j
i = i + 1
Loop
Label3.Caption = "排序过程的加工遍数为" + '填空
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
(1)代码“Private Sub Command1_Click()”中的Click是___________。(单选,填字母:
A.对象名/ | B.属性名/ | C.事件名) |
(3)程序代码中,将Label3.Caption赋值语句补充完整。_________________
(4)程序代码中,flag值为___________表示某一遍加工中发生过交换。


(1)以上代码的事件处理过程名是___________。
(2)程序代码中加框处有两处错误,请改正:①___________② ___________
(3)程序代码中,请将③处的代码补充完整___________

实现上述功能的VB程序如下:
(1)程序测试运行后生成如下文件:(
A.paixu.frm | B.paixu.vbp | C.paixu.vbw | D.paixu.exe),其中属于windows系统可执行文件是:(单选,填字母:_______) |
(3)加框①、②处代码有错,请改正。
Const n=10
Dim a(1 To 10) As Integer
Private Sub Command1_.Click()
For i=1 To n
①
List1.Additem Str(a(i))
Next i
End Sub
Private Sub Command2_Click()
tmp= 1
For i=1To n-1
For j=n To i+1 Step-1
If tmp*(a(j)-a(j-1))>0 Then ①______________________
t=a(j);a(j)=a(j-1):a(j-1)=t
End If
Next j
tmp=-1 ②______________________
Next i
For i=1 To 10
List2.Addltem Str(a(i))
Next i
End Sub
c=0:i=1
Do While i<=6
k=i
For j=i+1 To 7
If a(j)<=a(k) Then k=j
Next j
If a(i)<>a(k) Then
t=a(i):a(i)=a(k):a(k)=t
c=c+1
End If
i=i+1
Loop数组元素a(1)到a(7)的值依次为“9,9,8,16,45,9,78”。该程序段执行后,变量c的值是
A.0 | B.3 | C.4 | D.6 |
a(1) | a(2) | a(3) | …… | a(n-2) | a(n-1) | a(n) |
17 | 39 | 48 | …… | 79 | 46 | 34 |
设计一个VB程序,单击“排序”按钮Command1后,在标签中输出排序后的数据序列,运行结果如图所示。

实现上述功能的VB程序如下,加框处代码有错,请改正。
Const n-9 ‘变量u存储待排序数据个数,以9个数为例
Dim a(1 Ton) As Integer ‘数组a存储待排序数据
Private Sub Command1_Click()
Dim i As Integer,j As Integer,t As Integer,k As Integer
‘读取一组正整数,存入数组a中,
‘在标签Label中依次输出排序前数组a从1到n各个元素的值,代码略;
For i = 1 To n\2
k=1 Label'①________For j=i+1 To n-i+1
If a(k) > a(j) Then k = j
Next j
For j=i+1To n ‘②________
If a(j) <a(j +1) Then t =a(j): a(j) =a(j +1): a(j +1)=
Next j
Next i
‘在标签中依次输出排序后数组a从1到n各个元素的值,代码略;
End Suba(1) | a(2) | a(3) | …… | a(n-2) | a(n-1) | a(n) |
17 | 39 | 48 | …… | 79 | 79 | 100 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Const n = 8
Dim a(1 To n) As Integer, left As Integer, right As Integer, m As Integer
Dim i As Integer, j As Integer, t As Integer
’读取一组数,存储在数组a中,代码略
For i = 2 To n
left = 1

Do While left <= right
m = (left + right) \ 2
If a(i) < a(m) Then right = m - 1 Else left = m + 1
Loop

t = a(i)
For j = i To m + 1 Step -1
a(j) = a(j - 1)
Next j
a(m) = t
Next i
’输出排序结果,代码略End Sub