一位同学想编程解决“韩信点兵”的问题,他制定的如下工作过程中,最恰当的是( )。
A.设计算法,编写程序,提出问题,运行程序,得到答案
B.分析问题,编写程序,设计算法,运行程序,得到答案
C.分析问题,设计算法,编写程序,运行程序,得到答案
D.设计算法,提出问题,编写程序,运行程序,得到答案
当前题号:1 | 题型:选择题 | 难度:0.99
某对象的一个事件过程代码如下: 下列说法正确的是(  )
Private Sub Obj_Click()
  s=s+1
  Text.Text=Str(s)
End Sub
A.该过程的过程名为“Obj”B.该事件是一个“单击”事件
C.该对象的对象名为“Obj_Click”D.该对象的类名为“Sub”
当前题号:2 | 题型:选择题 | 难度:0.99
Visual Basic程序设计语言属于(  )。
A.汇编语言B.自然语言C.高级语言D.机器语言
当前题号:3 | 题型:选择题 | 难度:0.99
编写VB程序,实现在1到40中随机抽取n个不重复的数字。在文本框Text1中输入需要抽取的个数n,单击“抽取”按钮 Command1,在列表List1中输出结果,程序设计界面如图a所示。请回答下列问题:

图 a

(1)在设计程序界面时,应使用图 b 所示“控件工具箱”中的_____ (填写相应编号)添加列表框。

图 b

(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click()
Dim a(1 To 40) As Integer Dim i As Integer List1.Clear
n = Val(Text1.Text) Randomize
For i = 1 To n
    _____   ’随机生成[1,40]之间的正整数

For j = 1 To i - 1

If a(j) = a(i) Then

Exit For
End If
Next j
Next i
For i = 1 To n
List1.AddItem Str(a(i)) Next i
End Sub
(3)加框处代码有误,请改正_____。
(4)运行程序,在文本框 Text1 中输入 41,单击“抽取”按钮,程序错误提示为_____。(填写字母:
A.溢出/B.下标越界/C.缺少对象)
当前题号:4 | 题型:None | 难度:0.99
小明利用VB编写了一个“质因数分解”的程序,程序的功能如下:在文本框Textl中输入一个大于1的正整数,单击“转化”按扭Command 1后,则在标签Label 2中显示该整数质因数分解公式。若输入的数为素数时,则直接输出该数;若输入的数小于等于1或为小数时,则显示出错信息。程序运行时界面如图所示:

实现该程序的代码如下:
Private Sub Command1_Click( )
Dim n As Double,m As Long,s As String
n = Val (Text1.Text)
IfThen
m=2
s=“”
Do While n > 1
If n Mod m = 0 Then
_________①__________
If s=“”Then
s=Str(m)
Else
s=s+“X” + Str(m)
_________②__________
Else
m=m+1
End If
Loop
Label 2.Caption = Text1.Text+“=”+s
Else
Text1.Text=“”
Label2.Caption“=你输入的数不在转化范围内,请重新输入!”
End If
End Sub
(1)在程序界面设计时,应使用控件工具箱中的___________(单选题填字母
A.B.C.D.)控件添加命令按钮Comand1,并将该对象的____________属性设置为“转化”。
(2)加框处的代码有误,应改为_____________________。
(3)划线①处应填入代码___________________________。
(4)划线②处应填入代码___________________________。
(5)若在文本框中输入的内容为53,则标签Label2中显示的内容为_______________。
当前题号:5 | 题型:None | 难度:0.99
地球上任意位置可以用纬度、经度描述,纬度区间是[-90,90],经度区间是[-180,180]。如:浙江省绍兴市越城区鲁迅故里的纬度是29.9924099,经度为120.58552218。为表达位置间的邻近关系,引入了地理区域编码,某算法的核心思想如下:
•将地理上某点经纬度分别转换成二进制编码。例如,对于给定纬度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=middle
ret=ret十"1"

Else

upper=middle
ret t+"0
End If
i=i+1
Loop
DoubleToBits=ret
End function
当前题号:6 | 题型:None | 难度:0.99
数学上把2,4,8,16等数称为2的幂次方。编写程序,实现如下功能:在文本框Text1中输入一个正整数n,单击“查找”按钮,找到一个2的幂次方,使其与n之差的绝对值最小,并在标签框 Label1中输出。如果找到两个同时满足条件的幂次方,则输出较小的。程序运行界面如图所示。

(1)要使程序运行时,标签框Labell的ForeColor属性值为vbRed,可在Form_Load事件处理过程中添加语句___________(单选,填字母:
A.Label1. ForeColor= vbRed/B.Labell. vbRed= ForeColor/C.Fore Color. Label1=vbRed)。
(2)实现上述功能的VB程序如下,请在画线处填入合适的代码。
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=sum
ElseIf ___________Then
ans=sum/2
Else
ans =sum
End If
Label 1. Caption = Str(ans)
End Sub
(3)若文本框Text1中输入的内容为“24”,单击“查找”按钮,标签框 Label l中显示的内容是______________________。
当前题号:7 | 题型:None | 难度:0.99
纪念品分组问题。某教师节晚会的纪念品分组规则如下:按纪念品价值进行分组,每组总价值不超过限定值w且最多包含两件,要求分组数最少。编写VB程序解决该问题,程序运行时,在文本框Text1中依次输入每件纪念品的价格(不超过w),以逗号分隔,在文本框Text2中输人限定值w,单击“分组”按钮,在标签 Label2上输出最少的分组数。程序运行界面如图所示。

(1)要使程序启动后,窗体的标题栏显示“纪念品分组”文字,可在 Form Load事件过程中添加语句   (单选,填字母:
A.Form1="纪念品分组"/B.Form1.Name="纪念品分组"/C.Form1. Caption="纪念品分组"/D.Fom1.Text="纪念品分组")。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码;并且加框处代码有错,请改正。
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=0

Else

t=____________________

 End If

Next i
For i=n To 2 Step-1

For j=1 To '②

If a(j)< a(j+1)Then
t=a(j):a(j)=a(j+1):a(j+1)=t

End If

   Next j
Next 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+1

End If

Loop
If 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中显示的内容是____________。
当前题号:8 | 题型:None | 难度:0.99
过桥问题。n个旅行者在夜晚要通过一座狭窄的桥,桥上最多只能上2个人且必须借助手电筒,手电筒只有一只。为了使所有人在最短时间内过桥,设计算法如下:
(Ⅰ)如果只有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 Sub
Private 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 Then
temp 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)。
当前题号:9 | 题型:None | 难度:0.99
工资问题:某古老的工作和工资计算方式比较奇特,其工作要求如下:必须从1月1日当天开始工作,且连续工作n(n<=365)天才一次性结算得到工资。某年(假设当年为平年)的工资计算细则是:第1天获得1枚金币,接下来的2天(第2天和第3天)每天获得2枚金币,再接下来的3天(第4、5、6天)每天获得3枚金币,……,依次类推,即当连续n天每天获得n枚金币后,会在之后的连续n+1天里,每天获得n+1枚金币。
小王用VB编写了工资计算程序,当输入连续工作的最后一天的日期后,单击“计算”按钮Command1,程序自动计算工资总额,其运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)下列选项中,属于鼠标“单击”事件的是_______。(单选,填字母:
A.DblClick/B.Load/C.Click)
(2)请在划线处填入合适的代码。
①__________
②__________
(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
当前题号:10 | 题型:None | 难度:0.99