- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- + 算法实例的程序实现
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用

若该程序段执行后,在文本框Text1中输入的字符串长度不超过10,文本框Text2中输入的值在0到8范围内(输入输出都不包括双引号本身),下列说法不正确的是( )
A.若在文本框Text1中输入“ZGBG”,Text2中输入“0”,则Text3中显示“ZG,GB,BG” |
B.若在文本框Text1中输入“CCAA”,Text2中输入“1”,则程序运行结束时变量c的值为2 |
C.将数组a的定义语句改为“Dim a(1 To 9) As String”,程序依然能够正确运行 |
D.若a(1)到a(4)的值为“AB”,“AC” ,“BC” ,“AC”,则调用函数check(4)的结果为False |
“中国好声音”节目组要小杰用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)程序代码中划线处③应填入_________________________

实现上述功能的 VB 代码如下,其中加框处代码有错,请改正。
Dim n As Integer, i As Integer, t As Integer, sum As Long, s As String
n = Val(Text1.Text)
For i = 1 To n ^ 3 Step 2 ' 变量 i 表示连续奇数的首个整数
sum = 0 : t =i : flag = False
Do While sum <= n ^ 3 And flag = False
sum = sum + tt=t+1
If sum = n ^ 3 Then flag = True
Loop
If flag = True Then Exit For
Next is = Str(n) + "^" + Str(3) + "="
Do While sum > 0
sum = sum-1
If sum = 0 Then
s = s + Str(i)Else
s = s + Str(i) + "+"End If
i = i + 2
LoopText2.Text = s
End Sub
加框部分应改为:① _________ ②__________
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
Dim a(1 to 5) as Integer, i as Integer, c as Integer
a(1) = 2 : a(2) = 1 : a(3) = 3 : a(4) = 4 : a(5) = 5
c = 0
For I = 3 to 5
If a(i - 2) + a(i - 1) = a(i) Then c = c + 1
Next i
Text1.Text = Str(c)
该程序运行后,文本框text1中显示的内容是( )
A.1 | B.2 | C.3 | D.4 |
n = 0
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
If c >= "0" And c <= "9" Then m = 1 Else m = 2
a(m) = a(m) + 1
If a(m) = 1 Then n = n + 1
Next i
数组a各元素的初始值都为0,文本框Textl的内容为“Happy2017”。执行程序后,变量n的值为( )
A.1 | B.2 | C.4 | D.9 |

A.m的值是Fix((1+n)/2),中点值是 a(m) |
B.m的值是Fix((1+n)/2),中点值是 a(b(m)) |
C.m的值是Fix((b(1))+b(n))/2),中点值是 a(m) |
D.m的值是Fix((b(1))+b(n))/2),中点值是 a(b(m)) |

实现上述功能的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值为___________表示某一遍加工中发生过交换。