- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)小明编写了一个统计成绩的VB程序:编写一个过程,该过程从数据库读取学生的物理,化学,生物科目成绩,分别存储到数组a、b、c中;另又编写一个过程,该过程依据数组a,b,c中的相关数据统计班级物理、化学、生物三门成绩大于等于85分的学号。部分学号的成绩统计如图所示。
程序功能如下:单击“统计”按钮Command2,程序进行统计处理,结果输出在列表框List1、List2、List3中。
程序运行界面如图所示。

(1)在Command1_Click()过程中变量n的作用是_____________。
(2)请在划线处填入合适的代码。
Dim a(1 to 600) as integer '数组a存放物理成绩
Dim b(1 to 600) as integer '数组b存放化学成绩
Dim c(1 to 600) as integer '数组c存放生物成绩
Dim n as integer
Private Sub Command1_Click()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Conn ConnectionString="provider=Microsoft.AC
Conn.Open
Set rs.ActiveConnection=conn
rs.Open "SELECT * FROM whs"
n=0
Do While Not rs.EOF '从数据表中读取各科的数据赋值到相应数组
n=n+1
a(n)=rs.Fields("物理")
b(n)=rs.Fields("化学")
c(n)=rs.Fields("生物")
rs.MoveNext
Loop
'本过程的其他语句略
End sub
Private Sub Command2_Click()
'依据数组a中的相关数据统计各学生每门课大于等于85分的学号
Dim i As Integer
Dim d(1 to n) As Integer
For i= 1 to n
____________①
Next i
List1.AddItem "三门学科>=85分的学号有:"
List2.AddItem "两门学科>=85分的学号有:"
List3.AddItem "一门学科>=85分的学号有:"
For i = 1 To n
If a(i) >= 85 Then
d(i) = d(i) + 1
End If
If b(i) >= 85 Then d(i) = _____________②
If ___________③ Then
d(i) = d(i) + 1
End If
Next i
For i = 1 To n
If d(i) = 3 Then List1.AddItem Str(i)
If d(i) = 2 Then List2.AddItem Str(i)
If d(i) = 1 Then List3.AddItem Str(i)
Next i
End Sub
门数 | 学号 | 说明 |
只有一门>=85分 | 1,10 | d(i)存放每个学号对应的大于等于85分科次 |
只有两门>=85分 | 2,3,4,6,12 | |
只有三门>=85分 | 7,8,9,11 |
程序功能如下:单击“统计”按钮Command2,程序进行统计处理,结果输出在列表框List1、List2、List3中。
程序运行界面如图所示。

(1)在Command1_Click()过程中变量n的作用是_____________。
(2)请在划线处填入合适的代码。
Dim a(1 to 600) as integer '数组a存放物理成绩
Dim b(1 to 600) as integer '数组b存放化学成绩
Dim c(1 to 600) as integer '数组c存放生物成绩
Dim n as integer
Private Sub Command1_Click()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Conn ConnectionString="provider=Microsoft.AC
A.OLEDB.12.0;data source="+"Score.accdb" |
Set rs.ActiveConnection=conn
rs.Open "SELECT * FROM whs"
n=0
Do While Not rs.EOF '从数据表中读取各科的数据赋值到相应数组
n=n+1
a(n)=rs.Fields("物理")
b(n)=rs.Fields("化学")
c(n)=rs.Fields("生物")
rs.MoveNext
Loop
'本过程的其他语句略
End sub
Private Sub Command2_Click()
'依据数组a中的相关数据统计各学生每门课大于等于85分的学号
Dim i As Integer
Dim d(1 to n) As Integer
For i= 1 to n
____________①
Next i
List1.AddItem "三门学科>=85分的学号有:"
List2.AddItem "两门学科>=85分的学号有:"
List3.AddItem "一门学科>=85分的学号有:"
For i = 1 To n
If a(i) >= 85 Then
d(i) = d(i) + 1
End If
If b(i) >= 85 Then d(i) = _____________②
If ___________③ Then
d(i) = d(i) + 1
End If
Next i
For i = 1 To n
If d(i) = 3 Then List1.AddItem Str(i)
If d(i) = 2 Then List2.AddItem Str(i)
If d(i) = 1 Then List3.AddItem Str(i)
Next i
End Sub
(加试题)某对分查找算法的VB程序段如下:
i = 1: j = 8: c = 0
Do While i <= j
c = c + 1
m = Fix((i + j) / 2)
If key = b(m) Then Exit Do 'Exit Do表示退出循环
If key < b(m) Then j = m - 1 Else i = m + 1
Loop
数组元素b(1)到b(8)的值依次为 “22,32,39,48,71,82,96,106”。若该程序段运行结束后,c的值为2,则key的值是
i = 1: j = 8: c = 0
Do While i <= j
c = c + 1
m = Fix((i + j) / 2)
If key = b(m) Then Exit Do 'Exit Do表示退出循环
If key < b(m) Then j = m - 1 Else i = m + 1
Loop
数组元素b(1)到b(8)的值依次为 “22,32,39,48,71,82,96,106”。若该程序段运行结束后,c的值为2,则key的值是
A.48或32 | B.48或96 | C.32或82 | D.82或96 |
编写“数字提取”程序,实现如下功能:在文本框 Text1 中输入包含数字和其他非数字字 符混合的原始数据,点击“数字提取”按钮 Command1,将数据中的数字以“,”间隔输出到文本 框 Text2 中。程序运行界面如图所示,VB 代码如下。请回答以下问题:
(1)要使程序运行后,窗体 Form1 标题立即自动显示为“数字提取”,可在 (单选,填字 母:
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。 Private Sub Command1_Click()
Dim s As String, ch As String, flag As Boolean
Dim tmp As String, ans As String
s = Text1.Text
s = s + "."
tmp = "": ans = ""
flag = False
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "0" And ch <= "9" Then
tmp = ①
flag = True
ElseIf flag = True Then
ans = ans + tmp + ","
②
flag = False
End If
Next i
Text2.Text = ans End Sub
(3)如图,若删除程序中的语句“s = s + "."”,输入不变,则提取后的数字信息为 。

(1)要使程序运行后,窗体 Form1 标题立即自动显示为“数字提取”,可在 (单选,填字 母:
A.Form_Load / | B.Form_Click/ | C.Command1_Click)事件过程中添加语句 Form1.Caption="数字 提取"。 |
Dim s As String, ch As String, flag As Boolean
Dim tmp As String, ans As String
s = Text1.Text
s = s + "."
tmp = "": ans = ""
flag = False
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "0" And ch <= "9" Then
tmp = ①
flag = True
ElseIf flag = True Then
ans = ans + tmp + ","
②
flag = False
End If
Next i
Text2.Text = ans End Sub
(3)如图,若删除程序中的语句“s = s + "."”,输入不变,则提取后的数字信息为 。
在Visual Basic中,若x表示能被5整除的正整数,则下列逻辑表达式的值一定为真的是( )
A.x / 5=0 | B.x Mod 5=0 | C.Int(x\5)=0 | D.5 Mod x=0 |
运行下列VB程序,在文本框Text1中输入15,界面如图所示。

Private Sub Command1_Click()
Const x=“转换成八进制数为”
Dim y As Integer ‘用于存储输入的十进制自然数
Dim s As String ‘用于存储转换后的结果
Dim r As Integer
y=Val(Text1.Text)
s=“”
Do While y<>0 ‘采用除八取余法
r=y Mod 8
s=Str(r)+s
y=y\8
Loop
Label1.Caption=Text1.Text+x
Text2.Text=s
End Sub
单击“开始”按钮Command1后,标签Label1中显示的内容是_________,文本框Text2中显示的内容是_______。
在Visual Basic程序中,设x=389,能得到其百位数字“3”的表达式是( )
A.Int(x/10)*10 | B.Int(x/100)*100 | C.x-Int(x/10)*10 | D.Int(x/100) |
模拟剪刀石头布的游戏,用1~3这3个数分别代表剪刀、石头、布这三种情况,使用Rnd随机函数可以表示为( )
A.Int(Rnd(3)+1) | B.Int(Rnd*2+1) | C.Int(Rnd(2)+1) | D.Int(Rnd*3+1) |