- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- + 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
有如下程序段:
i=1
Do while i<=2
j=1
Do while j<=7-i
If a(j) > a(j+1) Then
t = a(j): a(j) = a(j+1): a(j+1) = t
End If
j=j+1
Loop
i=i+1
Loop
数组元素a(1)到a(7)的值依次为“44,24,33,67,77,58,12”,经过该程序段“加工”后,数组元素a(1)到a(7)的值依次为 ( )
i=1
Do while i<=2
j=1
Do while j<=7-i
If a(j) > a(j+1) Then
t = a(j): a(j) = a(j+1): a(j+1) = t
End If
j=j+1
Loop
i=i+1
Loop
数组元素a(1)到a(7)的值依次为“44,24,33,67,77,58,12”,经过该程序段“加工”后,数组元素a(1)到a(7)的值依次为 ( )
A.24,33,44,58,12,67,77 | B.12,24,33,67,77,58,44 |
C.12,24,44,33,58,67,77 | D.44,24,33,58,12,67,77 |
(加试题) 有如下 VB 程序段:
Dim a(1 To 10) As Integer
Dim s As String, n, i As Integer
s = "54851845236": n = Len(s)
For i = 1 To n - 1
a(i) = Val(Mid(s, i, 2))
Next i
For i = 1 To n - 2
k = i
For j = i + 1 To n - 1
If a(k) < a(j) Then k = j
Next
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
Next i
Text1.Text = Str(a(1))
该程序段运行后,文本框 Text1 中显示的内容是:
Dim a(1 To 10) As Integer
Dim s As String, n, i As Integer
s = "54851845236": n = Len(s)
For i = 1 To n - 1
a(i) = Val(Mid(s, i, 2))
Next i
For i = 1 To n - 2
k = i
For j = i + 1 To n - 1
If a(k) < a(j) Then k = j
Next
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
Next i
Text1.Text = Str(a(1))
该程序段运行后,文本框 Text1 中显示的内容是:
A.18 | B.54 | C.85 | D.8 |
小明编写了一个 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现有数组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 程序段用插入排序的方法实现 10 个数据升序排序。
Dim tmp As Integer
Dim a(1 To 10) As Integer
Private Sub Form_Load
'随机生成 10 个不重复的数存入数组 a,代码略
End Sub
Private Sub Command1_Click
For i = 2 To 10
If a(i) < a(i- 1) Then tmp = a(i)
For j = ① To 1 Step -1 '依次后移
If tmp > a(j) Then Exit For
②
Next j
③ '插入数据
End If
Next i End Sub 要实现上述功能,方框①②③中的语句分别是( )
Dim tmp As Integer
Dim a(1 To 10) As Integer
Private Sub Form_Load
'随机生成 10 个不重复的数存入数组 a,代码略
End Sub
Private Sub Command1_Click
For i = 2 To 10
If a(i) < a(i- 1) Then tmp = a(i)
For j = ① To 1 Step -1 '依次后移
If tmp > a(j) Then Exit For
②
Next j
③ '插入数据
End If
Next i End Sub 要实现上述功能,方框①②③中的语句分别是( )
A.i-1a(j+1)=a(j)a(j+1)=tmp |
B.i-1a(j+1)=a(j)a(j)=tmp |
C.10a(j)=a(j+1)a(j)=tmp |
D.10a(j)=a(j+1)a(j+1)=tmp |
将6名选手的歌唱比赛成绩存放在数组a中,如下表所示:

若按升序排列,采用冒泡排序算法自右向左进行比较和交换,第二轮排序之后a(4)中的值为________

若按升序排列,采用冒泡排序算法自右向左进行比较和交换,第二轮排序之后a(4)中的值为________
某排序算法,其VB代码如下:
i = 1
Do While i<= 5
If i = 0 Or a(i - 1) <= a(i) Then
i = i + 1
Else
t = a(i): a(i) = a(i - 1): a(i - 1) = t
i = i - 1
End If
Loop
数组元素a(0)到a(5)依次为:“0,61,22,43,89,27”,经过该程序段处理后,数组元素a(4)的值为( )
i = 1
Do While i<= 5
If i = 0 Or a(i - 1) <= a(i) Then
i = i + 1
Else
t = a(i): a(i) = a(i - 1): a(i - 1) = t
i = i - 1
End If
Loop
数组元素a(0)到a(5)依次为:“0,61,22,43,89,27”,经过该程序段处理后,数组元素a(4)的值为( )
A.43 |
B.89 |
C.61 |
D.27 |
(加试题)某VB程序段如下:
For m=1 To 9
s=m
For n=m+1 To 10
If Then s=n
Next n
If s<>m Then pp=d(s):d(s)=d(m):d(m)=pp
Next m
现对数组元素d(1)到d(10)进行从大到小排序,则程序中划线处的语句是( )
For m=1 To 9
s=m
For n=m+1 To 10
If Then s=n
Next n
If s<>m Then pp=d(s):d(s)=d(m):d(m)=pp
Next m
现对数组元素d(1)到d(10)进行从大到小排序,则程序中划线处的语句是( )
A.d(n)>d(s) | B.d(n)>d(m) | C.d(n)<d(m) | D.d(n)<d(s) |
(加试题)小李与小王合作编写一个成绩统计的VB程序:小王编写一个过程,该过程从数据库读取某一指定科目的相关数据,存储在数组a中;小李编写一个过程,该过程依据数组a中的相关数据进行排序。小李与小王约定的数组a各元素含义如图所示。
程序功能如下:在文本框Text1中输入科目名称,单击“读取数据库”按钮Command1,程序从数据库读取数据,数据存放与a()中,呈现方式如表所示;在文本框text2中输入第几班级,单击“开始排序”按钮Command2,程序对输入班级的学生成绩进行排序,结果输出在列表框List1中。程序运行界面如下图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)根据程序运行界面中的数据及数组a各元素的含义,数组元素a(5)表示的是_____________
(2)分析程序,可知数据库的文件名为____________________
(3)请在划线处填入合适的代码。
Dim a(1 To 600) As Integer '数组大小满足处理要求
Private Sub Command1_Click() '本过程由小王完成,从数据库读取指定科目的各相关数据,存储在数组a中
Dim conn As New ADODB.Conncction
Dim rs As New ADODB.Recordset
conn ConncctionString = "provider=Microsoft.AC
conn.Open
Set rs.ActiveConnection = conn '本过程的其他语句略
End Sub
Private Sub Command2_Click() '依据数组a中的相关数据对第k个班级的学生平均分进行升序排序
Dim i As Integer, j As Integer, n As Integer ‘i,j为循环变量,n为班级个数
Dim k as integer,t as integer
Dim p As Integer ‘p为前几个班级的总人数
k=val(text2.text)
For i=2 to k ‘求得前几个班级的总人数
p=p+a(i)
Next i
t=___________‘t为第k-1个班级最后一个学生所在的位置
For i=t+1 to t+a(k+1)-1 ‘t+1为第k个班级第一位学生所在的位置,t+a(k+1)为第k个班级最后一个学生所在的位置
For j= __________ to i+1 step -1
If a(j)<a(j-1) then
k= a(j - 1): a(j - 1) = a(j): a(j) = k
Endif
Next j
Next i
For i=1 to a(k+1)
List1.additem str(i)+” ”+str(a(t+i))
Next i
End Sub
数组元素 | 数组元素的含义 |
a(1) | 存储班级数n |
a(2) | 从a(2)到a(n+1) 依次存储第1、2、…第n个班级人数 |
… | |
a(n+1) | |
a(n+2) | 从a(n+2) 依次存储第1班每个学生的单科成绩、第2班每个学生的单科成绩、…第n班每个学生的单科成绩 |
… | |
… |
程序功能如下:在文本框Text1中输入科目名称,单击“读取数据库”按钮Command1,程序从数据库读取数据,数据存放与a()中,呈现方式如表所示;在文本框text2中输入第几班级,单击“开始排序”按钮Command2,程序对输入班级的学生成绩进行排序,结果输出在列表框List1中。程序运行界面如下图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)根据程序运行界面中的数据及数组a各元素的含义,数组元素a(5)表示的是_____________
(2)分析程序,可知数据库的文件名为____________________
(3)请在划线处填入合适的代码。
Dim a(1 To 600) As Integer '数组大小满足处理要求
Private Sub Command1_Click() '本过程由小王完成,从数据库读取指定科目的各相关数据,存储在数组a中
Dim conn As New ADODB.Conncction
Dim rs As New ADODB.Recordset
conn ConncctionString = "provider=Microsoft.AC
A.OLEDB.12.0;data source=" + "Score.accdb" |
Set rs.ActiveConnection = conn '本过程的其他语句略
End Sub
Private Sub Command2_Click() '依据数组a中的相关数据对第k个班级的学生平均分进行升序排序
Dim i As Integer, j As Integer, n As Integer ‘i,j为循环变量,n为班级个数
Dim k as integer,t as integer
Dim p As Integer ‘p为前几个班级的总人数
k=val(text2.text)
For i=2 to k ‘求得前几个班级的总人数
p=p+a(i)
Next i
t=___________‘t为第k-1个班级最后一个学生所在的位置
For i=t+1 to t+a(k+1)-1 ‘t+1为第k个班级第一位学生所在的位置,t+a(k+1)为第k个班级最后一个学生所在的位置
For j= __________ to i+1 step -1
If a(j)<a(j-1) then
k= a(j - 1): a(j - 1) = a(j): a(j) = k
Endif
Next j
Next i
For i=1 to a(k+1)
List1.additem str(i)+” ”+str(a(t+i))
Next i
End Sub
用选择排序将七个数“2022,2017,2018,2014,2021,2012,2015”从小到大进行排序,则第二轮交换数据后的顺序是( )
A.2022,2021,2018,2017,2014,2012,2015 | B.2012,2014,2018,2017,2021,2022,2015 |
C.2012,2017,2018,2014,2021,2022,2015 | D.2022,2021,2018,2014,2017,2012,2015 |