- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- + 面向对象程序设计 VB开发工具
- 程序设计语言
- 循环结构
- 分支结构
- 顺序结构
- 类、对象、属性、方法、事件和事件处理的概念
- VB应用程序的界面设计与调试
- 基本数据类型
- 常量、变量、数组
- 常用的标准函数
- 基本运算及表达式
- 赋值语句
- 选择语句
- 循环语句
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
Private Sub Form_Click()
s = 11 \ 3 + 11 Mod 3
Print s
End Sub
A.3 | B.4 | C.5 | D.6 |

Dim adoConn As New ADODB. Connection
Dim adoRs as New ADODB. Recordset
Dim a(l to 1000) As String, b(l to 1000) As Integer
adoConn. Connection String ="Provider ="Microsoft
ACE. OLEDB 12.0;
DATA Source="&App. Path&"\mydata. Accdb"
adoConn. Open
Set adoRs. ActiveConnection=adoConn
adoRs. Open" Select* From Score"
n=0
Do While Not adoRs. EOF
n=n+1
a(n)= adoRs, Fields("学号"). Value
b(n)=adoRs Fields(3). Value
adoRs. MoveNext
LoopadoRs. Close:adoConn.Close
下列对于该程序段的理解正确的有( )
①程序连接的数据库文件名是" mydata.echb"
②程序打开的数据表名称是" Score"
③程序将数据表中的数学成绩存入数组b
④程序运行后,变量n的值表示该数据表中记录的总数
⑤关闭数据表的语句为 adoConn. Close
A.①②④ | B.②③④ | C.②④⑤ | D.②③④⑤ |
•将地理上某点经纬度分别转换成二进制编码。例如,对于给定纬度lat(299924099),编码规则为:
•将区间[-90,90]二分为[-90,0),[0,90],称为左、右区间,1at属于右区间[0,90],标记为1;
•将区间[0,90]二分为[0,45),[45,90],lat属于左区间[0,45),标记为0;
•重复上述过程,不断划分区间,lat属于左区间则记录0,属于右区间则记录1。直到达到指定编码长度 length(一般为5的倍数)为止类似地,可对经度lng(120.58552218进行二进制编码。
·Base32编码合成为地理区域字符串。以编码长度 length=10为例,如前述计算得到,鲁迅故里的纬度编码为10101 01010,经度编码为11010 10110。地理区域字符串生成规则:
•生成新串:奇数位放经度,偶数位放纬度,将两串编码组合:110110 11001 10011 01100;
•分组转换:将11100 11001 10011 01100每5位一组转成1个十进制整数,分别对应为28,25,19,12;
•Base32编码:使用数字0~9、小写字母(去掉字母a,i,1,o)这32个字符进行Base32编码(见下表)。十进制整数28,25,19,12对应的编码组合就是“wtmd”,即为该位置的地理区域字符串。

(1)规定编码长度 length为5,经度lng为120.125 082 58,则经度lng的二进制编码为__________。
(2)小沈根据上述描述,设计了一个“利奇马”台风中心途经经纬度转换为地理区域字符串的算法。该算法VB程序实现如下,请在划线处填入合适的代码
Const m=48, length=20'纬度、经度二进制编码长度均为 length
Dim a(1 To 2.* m)As Double
Dim b(1 To m) As string
′读取m个时刻台风中心的经纬度数据并存入数组a,代码略'a(1),a(2)为台风在时刻1的纬度、经度,a(3),a(4)为台风在时刻2的纬度和经度,......
′b(1)保存台风在时刻1的地理区域字符串,b(2)保存台风在时刻2的地理区域字符串,......
Private Sub Command1 _ Click()
′1at为纬度、1ng为经度,code为地理区域编码
Dim lat As double, Ing As Double, code As String
Dim strLat As String, strLng As String, s As String
Dim i As integer, j As Integer, n As Integer
Const base32="0123456789bcdefghjkmnpqrstuvwxyz"
For i=1 To m
lat=a(2*i-1)Ing=a(2*i)
S=""
strLat= DoubleToBits (lat,—90,90) ′纬度转换为二进制
编码
strLng=DoubleToBits(lng,—180,180) ′经度转换为二进制
编码
For j=1 To length
s=①________ ′将两串二进制编码
组合
Next j
n=0: code=""
For j=1 To Len(s)
②___________
If j Mod 5=0 Then
code= code+Mid(base32,n+1,1)
n=0
End If
Next j
b(i)=code
Next i
′输出地理区域编码,代码略
End sub
′函数 Doubletobits根据指定的区间[ lower,upper],计算 value的二进制编码
Function Double ToBits( value As Double,lower As Double, upper As Double) As String
Dim ret As String, i As Integer, middle As Double
ret="":i=1: middle=0
Do While i<= length
middle=(upper+lower)/2
If③_________Then
lower=middleret=ret十"1"
Else
upper=middleret t+"0
End If
i=i+1
Loop
DoubleToBits=ret
End function

(1)要使程序运行时,标签框Labell的ForeColor属性值为vbRed,可在Form_Load事件处理过程中添加语句___________(单选,填字母:
A.Label1. ForeColor= vbRed/ | B.Labell. vbRed= ForeColor/ | C.Fore Color. Label1=vbRed)。 |
Private Sub Command 1_ Click()
Dim n As Long, sum As Long, ans As Long
n= Val(Textl. Text)
sum=1
Do While sum <n
____________
Loop
If n =sum Then
ans=sumElseIf ___________Then
ans=sum/2
Else
ans =sum
End If
Label 1. Caption = Str(ans)
End Sub
(3)若文本框Text1中输入的内容为“24”,单击“查找”按钮,标签框 Label l中显示的内容是______________________。

(1)要使程序启动后,窗体的标题栏显示“纪念品分组”文字,可在 Form Load事件过程中添加语句 (单选,填字母:
A.Form1="纪念品分组"/ | B.Form1.Name="纪念品分组"/ | C.Form1. Caption="纪念品分组"/ | D.Fom1.Text="纪念品分组")。 |
Private Sub Command1 Click()
Dim a(l To 1000), n As Integer, w As Integer,cnt As Integer
Dim i As Integer, j As Integer, t As Integer
Dim s As String, ch As String
Dim p As Integer, q As Integer
S= Textl. Text: w =Val(text2. Text): n=0
For i=1 To Len(s)
ch=Mid(s, i, 1)
If ch="."Then
n=n+1:a(n)=t: t=0Else
t=_________①___________
End If
Next iFor i=n To 2 Step-1
For j=1 To '②
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next jNext i
cnt= 0
p=1: q=n
Do While p<q
cnt=cnt+1
If ________③_________ Then
p=p+1:q=q-1
Else
p=p+1End If
LoopIf p=q Then cnt=cnt+1
Label2 Caption- Str(cnt)
End sub
(3)若在文本框Text1中输入“50,30,100,70,80,40,50,20”,文本框Text2中输人“110”,单击“分组”按钮,标签Labe2中显示的内容是____________。
(Ⅰ)如果只有1人过桥,时间为个人过桥时间。
(Ⅱ)如果有2人一起过桥,时间以慢的人为准。
(Ⅲ)如果有3个人a、b、c,时Ta<Tb<Tc,过桥方案为让a和b起过桥,a拿手电筒回来,然后与c一起过桥。
(Ⅳ)如果存在多于3个人过桥,如a、b、…y、z需要过桥,耗时Ta<Tb<…<Ty<Tx,这时有两种可选方案,选择其中用时少的,直至剩余人数少于4人。
①最快的1个将最慢的2个分别送过桥。
a拿手电筒与z过桥,然后a拿手电筒回来与y一起过桥,a再拿手电筒回来与b一起过桥。
②最快的2个先将最慢的2个送过桥。
让a、b拿手电筒先过桥,a拿手电筒回来,让y、z拿手电筒过桥,然后b拿手电筒回来与a一起过桥。
为验证方案,小明设计了相应的VB程序。首先从数据库中获取每个人的过桥时间,并显示在列表框List1中,单击“计算”按钮 Command1,在文本框Text1中输入最短耗时,界面如下图所示。

(1)VB程序代码如下,请在划线处填入合适的代码。
Dim n As Integer ‘存放过河人数
Dim t (1 To 100) As Integer ‘存放每个人单独过桥时间
Private Sub Form _ load()
‘从数据库中读取每个人的过桥时间,显示在列表框List1中,并统计总人数n,代码略
End SubPrivate Sub Command1_Click()
Dim i As Integer, k As Integer, j As Integer, temp As Integer
Dim sum1 As Integer, sum2 As Integer, tsum As Integer
sum1 = 0:sum2 = 0:tsum=0
For i = 1 To n – 1 ‘对每个人的过桥耗时进行升序排序
k = i
For j = i + 1 To n
If ______ Then k = j
Next j
If k <> i Thentemp t(i):t(i) = t(k):t(k) = temp
End if
Next i
i=n
do while i>3
sum1=2*t(1)+t(i-1)+t(i) ‘方案①
sum2=t(1)+2*t(2)+t(i) ‘方案②
if sum1<sum2 then
tsum=tsum+sum2
end if
i=_____
Loop
If n = 1 Then ‘剩下1个人
tsum = tsum + t(1)
ElseIf n = 2 Then ‘剩下2个人
tsum = tsum + t(2)
Else ‘剩下3个人
tsum = _____
End If
Text1. Text = Srt(tsum)
End Sub
(2)如有5个人,他们单独过桥耗时(单位:s)如下图所示,则程序运行后文本框Text2中显示的最短耗时:_________(s)。

小王用VB编写了工资计算程序,当输入连续工作的最后一天的日期后,单击“计算”按钮Command1,程序自动计算工资总额,其运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)下列选项中,属于鼠标“单击”事件的是_______。(单选,填字母:
A.DblClick/ | B.Load/ | C.Click) |
①__________
②__________
(3)加框处的代码有错误,请改正。
__________
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer
Dim m As Integer,d As Integer,n As Integer
Dim md As String,sum As Integer
md = "312831303130313130313031"
n = 0
m = Val(Text1.Text)
d = Val(Text2.Text)
For i = 1 To m - 1
n = ①
Next i
n = n + d
i = 0:j = 0
sum = 0:k = 1
Do While i < n
sum =

j = j + 1
If ② Then
j = 0
k = k + 1
End If
i = i + 1
Loop
Text3.Text = Str(sum)
End Sub

(1)分析程序代码,如图里“选课组合”序号为30的组合名称为:___________________。
(2)请在划线处填入合适的代码。请回答下列问题:
Dim zh(1 To 16) As String, zrs As Integer
Dim xk(1 To1000) As String'存放同学的选课科目组合,已知学生人数少于1000人
Dim zh2(1 To 35) As String'存放35种选课科目组合
Dim rstj(1 To 35) As Integer'存放各种选课组合选课人数
Private Sub Form_ Load()
‘本过程从数据库中读取学生的选课情况数据,存放在数组xk中,学生的总人数存放在变量zrs。’代码略
End Sub
Private Sub Command l_ Click( )
Dim i As Integer,j As Integer, m As Integer, n As Integer, k As Integer
Dim km(1 To 7)As String
Listl.Clear
List1. AddIton“序号”+“” +“组合名称”
km(1)= “物”:km(2)= “化”:km(3)= “生”km(4)= “政”
km(5)= “史”km(6)= “地”:km(7)= “技”
m= 1
For i= 1 To 5
For k= i+1 To 6
zh(m)=km(i)+ km(k)
m= m+ 1
Next kNext i
j= 3:n= 1:y= j
For i= 1 To m
For k= y To 7
zh2(n)=___________________________________If n< = 9 Then
Listl. AddItem n &""&" "& zh2(n)
Else
Listl. AddItem n &" "& zh2(n)
End If
n= n+ 1
Next k
y= y+ 1
If y=8 Then
j= ___________________________ :y= j
End IfNext i
End sub
Private Sub Command2_ Click( )
Dim i As Integer
List2. Clear
List2. Additon"组合名称"+""+"选课人数”
For i= 1 To 35rstj(i)=_____________________________
List2 AddItem zh2(i)+" "+ Str (rstj (i))Next i
End Sub
Function tj (zhmc As String) As Integer'统计某种选课组合的选课人数
Dim i As Integer, rs As Integer
rs= 0
For i= I To zrs
If zhmc = xk(i) Then
rs= rs+ 1End If
Next itj= rs
End Function

(1)要使程序运行时,文本框 Text1 的文字大小 FontSize 属性值设置为 12,可在 Form_Load 事件过程中添加语句__________________(单选,填字母:
A.FontSize = 12 / | B.Text1. FontSize =12 / | C.FontSize. Text1=12)。 |
Private Sub Command1_Click()
Dim a As Long, n As Integer, s As Long
Dim s1 As String, t As Long
a =Val(Text1. Text)
n =Val(Text2. Text)
If a < 1 Or a > 9 Then
List1. AddItem "输入 a 的值无效"
ElseIf n < 1 Or n > 9 Then
List1. AddItem "输入 n 的值无效"
Else
s = a: t = a
s1 =Str(t)
List1. AddItem s1 +"=" + Str(s)
i = ①__________
Do While i <= n
②__________
s = s + t
s1 = s1 + "+" +Str(t)
List1. AddItem s1 + "=" + Str(s)
③__________
Loop
End If
End Sub