- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- + 面向对象程序设计 VB开发工具
- 程序设计语言
- 循环结构
- 分支结构
- 顺序结构
- 类、对象、属性、方法、事件和事件处理的概念
- 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
在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) |
某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在 文本框Text1中输入连续多组编码,单击“翻译”按钮Commandl,结果显示在列表框List1中。
程序运行界面如右图所示。

(1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句________(单选,填字母:
(2)实现上述功能的VB程序如下,请在划线处填人合适的代码。
Private Sub Command1_Click()
Dim s As String, c As String, d As String
Dim n As Integer, bl As Integer, b2 As Integer, v As Integer, i As Integer
s = Textl.Text: n = Len(s): i = 1
Do While i <= n
c = Mid(s, i, 2)
If c = "00" Then
d = "东"
ElseIf c = "01" Then
d = "南"
ElseIf c = "10" Then
d = "西"
Else
d = "北"
End If
b1 = Val(Mid(s, i + 2, 1))
b2 = Val(Mid(s, i + 3, 1))
v=_______________①
List1.AddItem d + " " + Str(v)
_____________②
Loop
End Sub
(3)若文本框Textl中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是_________。
程序运行界面如右图所示。

(1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句________(单选,填字母:
A.Width=2018 / | B.Textl. Width = 2018 / | C.Width. Textl=2018)。 |
Private Sub Command1_Click()
Dim s As String, c As String, d As String
Dim n As Integer, bl As Integer, b2 As Integer, v As Integer, i As Integer
s = Textl.Text: n = Len(s): i = 1
Do While i <= n
c = Mid(s, i, 2)
If c = "00" Then
d = "东"
ElseIf c = "01" Then
d = "南"
ElseIf c = "10" Then
d = "西"
Else
d = "北"
End If
b1 = Val(Mid(s, i + 2, 1))
b2 = Val(Mid(s, i + 3, 1))
v=_______________①
List1.AddItem d + " " + Str(v)
_____________②
Loop
End Sub
(3)若文本框Textl中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是_________。
挤牛奶问题:如有三个农民每天清晨5点起床,然后去牛棚分别给3头牛挤奶。第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻(总共挤了700个时刻),第二个农民在700时刻开始,在1200时刻结束(总共挤了500个时刻)。第三个农民在1500时刻开始2100时刻结束(总共挤了600个时刻)。期间最长挤奶的连续时间为900秒(从300时刻到1200时刻),而最长的无人挤奶的连续时间为300时刻(因第二个农民在1200时刻已结束,而第三个农民从1500时刻才开始,中间有300时刻没有人在挤牛奶)。相应时刻如下图所示:

下面提供的程序是,从N个农民(1<N<=5000)挤N头牛的工作时间列表,计算出最长有人在挤牛奶的时间段与最长的无人挤牛奶的时间段。
下图为两组不同数据程序运行后界面;

请在划线处填入相应的代码,使程序功能完善。
Dim a(1 To 100) As Integer '存放农民挤牛奶开始时刻
Dim b(1 To 100) As Integer '存放农民挤牛奶结束时刻
Dim n As Integer '存放农民人数
Private Sub Form_Load()
‘获取农民的人数与各个农民开始挤牛奶与结束挤牛奶的时间,并在list1中输出
‘相应的代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim t As Integer, ymax As Integer, nmax As Integer
Dim btime As Integer, etime As Integer, flag As Boolean
flag = True: i = 1
Do While i <= ________And flag
flag = False
For j = 1 To n - i
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
t = b(j): b(j) = b(j + 1): b(j + 1) = t
flag = True
End If
Next j
i = i + 1
Loop
btime = a(1): etime = b(1)
ymax = etime - btime: nmax = 0
For i = 2 To n
If _______________________________Then
etime = b(i)
If etime - btime > ymax Then ymax = etime - btime
ElseIf etime < a(i) Then
If a(i) - etime > nmax Then nmax = a(i) - etime
btime = a(i): etime = b(i)
End If
Next i
Label2.Caption = "最长挤牛奶时间为:" + Str(ymax) + " 时刻"
Label3.Caption = "最长无人挤牛奶时间为:" + Str(nmax) + " 时刻"
End Sub

下面提供的程序是,从N个农民(1<N<=5000)挤N头牛的工作时间列表,计算出最长有人在挤牛奶的时间段与最长的无人挤牛奶的时间段。
下图为两组不同数据程序运行后界面;

请在划线处填入相应的代码,使程序功能完善。
Dim a(1 To 100) As Integer '存放农民挤牛奶开始时刻
Dim b(1 To 100) As Integer '存放农民挤牛奶结束时刻
Dim n As Integer '存放农民人数
Private Sub Form_Load()
‘获取农民的人数与各个农民开始挤牛奶与结束挤牛奶的时间,并在list1中输出
‘相应的代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim t As Integer, ymax As Integer, nmax As Integer
Dim btime As Integer, etime As Integer, flag As Boolean
flag = True: i = 1
Do While i <= ________And flag
flag = False
For j = 1 To n - i
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
t = b(j): b(j) = b(j + 1): b(j + 1) = t
flag = True
End If
Next j
i = i + 1
Loop
btime = a(1): etime = b(1)
ymax = etime - btime: nmax = 0
For i = 2 To n
If _______________________________Then
etime = b(i)
If etime - btime > ymax Then ymax = etime - btime
ElseIf etime < a(i) Then
If a(i) - etime > nmax Then nmax = a(i) - etime
btime = a(i): etime = b(i)
End If
Next i
Label2.Caption = "最长挤牛奶时间为:" + Str(ymax) + " 时刻"
Label3.Caption = "最长无人挤牛奶时间为:" + Str(nmax) + " 时刻"
End Sub