- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
小明编写了一个 VB 程序对成绩数据进行排序。为保证相同分数的同学相对位置(指原数据中的前后关系)不发生改变,他试着采用一种新的排序算法来解决。为便于描述算法的实现过程,假定有如下数组 a:
第一步:统计数组 a 中每个值 a(i)出现的次数,存入 b(a(i)),统计完成后数组 b 的情况如下:
第二步:从前向后,依次使数组 b 中的每个值等于其与前一项之和,这样数组 b(a(i))就代表了数组 a 中小于或等于 a(i)的元素个数,完成第二步后数组 b 如下:
第三步:从后往前,依次将数组 a 中元素填入数组 c 中,将数组元素 a(i)放在数组 c 的第 b(a(i))项,如元素 a(1)=5,应该放在数组 c 的 b(5)位(即 c(5) )。每放一个元素就将 b(a(i))递减;完成第三步后,数组 c 如下所示,已经完成升序排序,且相对位置不变,即原来 a (2)的值 3 仍然在 a(3)的值 3 前面。
程序运行界面如右图所示:

实现上述功能的 VB 程序如下,回答以下问题:
(1) 从代码中可以得知,用于连接数据库的对象名是:________
(2) 请在划线处填上相应代码。
Dim a(1 To 50) As Integer '存放学生的成绩
Dim sname(1 To 50) As String '存放学生姓名
Dim n As Integer
Private Sub Command1_Click
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
App.Path + "\stu.accdb"
conn.Open
strSQL = "SELECT * From stucj"
Set rs.ActiveConnection = conn
rs.Open strSQL
n = 0
List1.AddItem "姓 名" & " " & "成绩"
Do While Not rs.EOF
n = n + 1
a(n) = rs.Fields("cj")
sname(n) = rs.Fields("xm")
List1.AddItem sname(n) & " " & Str(a(n))
①_________
Loop
rs.Close
conn.Close
End Sub
Private Sub Command2_Click
Dim i As Integer, k As Integer
Dim b(0 To 100) As Integer
Dim c(1 To 50) As Integer, c1(1 To 50) As String 'c 和 c1 作为临时数组
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next
For i = 1 To 100
b(i) = ②__________
Next
For i = n To 1 Step -1
c(b(a(i))) = a(i)
c1(b(a(i))) = sname(i)
③_________________
Next
For i = 1 To n '把临时数组 c 和 c1 中的数据放入 a 和 sname 数组
a(i) = c(i)
sname(i) = c1(i)
Next
List2.AddItem "姓 名" & " " & "成绩"
For i = 1 To n
List2.AddItem sname(i) & " " & Str(a(i))
下标 | 1 | 2 | 3 | 4 | 5 |
值 | 5 | 3 | 3 | 2 | 4 |
第一步:统计数组 a 中每个值 a(i)出现的次数,存入 b(a(i)),统计完成后数组 b 的情况如下:
下标 | 1 | 2 | 3 | 4 | 5 |
值 | 0 | 1 | 2 | 1 | 1 |
第二步:从前向后,依次使数组 b 中的每个值等于其与前一项之和,这样数组 b(a(i))就代表了数组 a 中小于或等于 a(i)的元素个数,完成第二步后数组 b 如下:
下标 | 1 | 2 | 3 | 4 | 5 |
值 | 0 | 1 | 3 | 4 | 5 |
第三步:从后往前,依次将数组 a 中元素填入数组 c 中,将数组元素 a(i)放在数组 c 的第 b(a(i))项,如元素 a(1)=5,应该放在数组 c 的 b(5)位(即 c(5) )。每放一个元素就将 b(a(i))递减;完成第三步后,数组 c 如下所示,已经完成升序排序,且相对位置不变,即原来 a (2)的值 3 仍然在 a(3)的值 3 前面。
下标 | 1 | 2 | 3 | 4 | 5 |
值 | 2 | 3 | 3 | 4 | 5 |
程序运行界面如右图所示:

实现上述功能的 VB 程序如下,回答以下问题:
(1) 从代码中可以得知,用于连接数据库的对象名是:________
(2) 请在划线处填上相应代码。
Dim a(1 To 50) As Integer '存放学生的成绩
Dim sname(1 To 50) As String '存放学生姓名
Dim n As Integer
Private Sub Command1_Click
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
App.Path + "\stu.accdb"
conn.Open
strSQL = "SELECT * From stucj"
Set rs.ActiveConnection = conn
rs.Open strSQL
n = 0
List1.AddItem "姓 名" & " " & "成绩"
Do While Not rs.EOF
n = n + 1
a(n) = rs.Fields("cj")
sname(n) = rs.Fields("xm")
List1.AddItem sname(n) & " " & Str(a(n))
①_________
Loop
rs.Close
conn.Close
End Sub
Private Sub Command2_Click
Dim i As Integer, k As Integer
Dim b(0 To 100) As Integer
Dim c(1 To 50) As Integer, c1(1 To 50) As String 'c 和 c1 作为临时数组
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next
For i = 1 To 100
b(i) = ②__________
Next
For i = n To 1 Step -1
c(b(a(i))) = a(i)
c1(b(a(i))) = sname(i)
③_________________
Next
For i = 1 To n '把临时数组 c 和 c1 中的数据放入 a 和 sname 数组
a(i) = c(i)
sname(i) = c1(i)
Next
List2.AddItem "姓 名" & " " & "成绩"
For i = 1 To n
List2.AddItem sname(i) & " " & Str(a(i))
Next
End Sub一个三位正整数,它是一个奇数,它的百位数、十位数、个位数之和为9的倍数,例如225。试求所有满足上述条件的数的和。
(1) 我们可以用_____算法来完成本题。
(2) 假设我们通过某一方法得到一个三位数X各位数字之和为S,如何判断S是9的倍数?写出VB语言的关系表达式______________
(3) 用VB语言完成本题。__________
(1) 我们可以用_____算法来完成本题。
(2) 假设我们通过某一方法得到一个三位数X各位数字之和为S,如何判断S是9的倍数?写出VB语言的关系表达式______________
(3) 用VB语言完成本题。__________
本程序的功能是:输入一个字符串,将该字符串反向输出。例如,输入:abcdefgh 输出:hgfedcba。请将下列程序补充完整。
程序空白处应填写的语句是:_________________________________
Dim s1 As String, s2 As String Dim c As Integer, i As Integer s1 = InputBox("请输入一串字符") s2 = "" c = Len(s1) For i = ____________________ s2 = Mid(s1, i, 1) + s2 Next i Print s2 | (函数功能提示) (1)函数Len(x)的功能是:取字符串x的长度值(即字符个数值)。 若x="abc",则Len(x)的值为3。 (2)函数Mid(x,y,z)的功能是:在字符串x中第y个字符开始取z个字符。 若x="abcdefg",则 Mid(x,4,3)取得的值是"def"。 |
程序空白处应填写的语句是:_________________________________
现有数组d如下:
若按降序排列,采用选择排序算法选出最大值进行比较和交换,那么在第4轮的数据处理过程后,d(8)的值是( )。
d(1) | d(2) | d(3) | d(4) | d(5) | d(6) | d(7) | d(8) |
10 | 12 | 21 | 6 | 15 | 5 | 3 | 18 |
若按降序排列,采用选择排序算法选出最大值进行比较和交换,那么在第4轮的数据处理过程后,d(8)的值是( )。
A.21 | B.6 | C.5 | D.12 |
(加试题)小王编写了一个猜价格的VB程序,程序界面如图所示。程序运行时,在列表框List1中显示20个随机生成的在[150,250]之间的价格及其序号。在文本框Text1中输入报价,单击Command1 “猜测”按钮后,在Label3中输出猜中价格对应的序号。

实现上述功能的VB程序如下,但加框处代码有误,请改正。
Dim d(1 To 20) As Integer
Private Sub Form_Load()
For i = 1 To 20 '生成20个随机价格
d(i)=Int(Rnd*100)+150 ‘(1)________
Next i
For i = 1 To 19
For j = 20 To i + 1 Step -1
If d(j) < d(j - 1) Then
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
For i = 1 To 20
End Sub
Private Sub Command1_Click()
Dim baojia As Integer,i as integer, j as integer, t as integer , m as integer
Randomize
List1.Clear
baojia = Val(Text1.Text)
i = 1
j = 20
Do While i<= j
m=(i+j)/2 ‘(2)________
If baojia = d(m) Then
Label3.Caption = "猜中 第" + Str(i) + "个"
Exit Do
ElseIf baojia<d(m) Then
j = m - 1
Else
i=m-1 ‘(3)________
End If
Loop
End Sub

实现上述功能的VB程序如下,但加框处代码有误,请改正。
Dim d(1 To 20) As Integer
Private Sub Form_Load()
For i = 1 To 20 '生成20个随机价格
d(i)=Int(Rnd*100)+150 ‘(1)________
Next i
For i = 1 To 19
For j = 20 To i + 1 Step -1
If d(j) < d(j - 1) Then
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
Next j
Next iFor i = 1 To 20
List1.AddItem Str(i) + Str(d(i))
Next iEnd Sub
Private Sub Command1_Click()
Dim baojia As Integer,i as integer, j as integer, t as integer , m as integer
Randomize
List1.Clear
baojia = Val(Text1.Text)
i = 1
j = 20
Do While i<= j
m=(i+j)/2 ‘(2)________
If baojia = d(m) Then
Label3.Caption = "猜中 第" + Str(i) + "个"
Exit Do
ElseIf baojia<d(m) Then
j = m - 1
Else
i=m-1 ‘(3)________
End If
Loop
End Sub
(加试题)有如下VB程序段:
i = 1
Do While i<= 3
数组元素 a(1)到 a(6)的值依次为7、8、3、9、6、2,则该程序段运行后,数组元素a(1)到 a(6)的值依次是
i = 1
Do While i<= 3
min = i
j = i + 1
Do While j <= 6
If a(j) < a(min) Then min = j
j = j + 1
Loop
If i<>min Then tmp = a(i): a(i) = a(min): a(min) = tmp
i = i + 1
Loop数组元素 a(1)到 a(6)的值依次为7、8、3、9、6、2,则该程序段运行后,数组元素a(1)到 a(6)的值依次是
A.9,8,7,3,6,2 |
B.2,3,6,7,8,9 |
C.2,3,6,9,8,7 |
D.9,8,7,6,3,2 |