程序运行界面如图所示,左边列表框List1中显示的是会员卡号和余额,在文本框Text1中输入会员卡号,单击"查询余额"按钮(Command1)后,如果找到此卡号,则在标签Label2中显示"此卡号余额为"和卡号对应的余额值,如果未找到则显示"找不到此卡号,请重新输入"。

解决此问题的部分程序段如下:
Dim kh (1 To n) As Long
Dim ye (1 To n) As Single
Private Sub Command1_Click()
Dim x As Long, i As Long, j As Long, m As Long, f As Boolean
x = Val(Text1.Text)
i = 1: j = n: f = False ‘ 设卡号总数为n
Do While ①
②
If x = kh (m) Then
f = True
ElseIf x < kh (m) Then
j = m - 1
Else
③
End If
Loop
If f Then
Label2.Caption = "此卡号余额为" + Str(ye(m)) + "元"
Else
Label2.Caption = "找不到此卡号,请重新输入"
End If
End Sub
Private Sub Form_Load()
’此过程用于对数组kh和数组ye进行初始赋值,代码略
End Sub
Private Sub Command1_Click()
Dim s As String, ch As String
Dim i As Integer, n As Integer
Dim max1 As Integer, max2 As Integer
s = Text1.Text: n = Len(Text1.Text)
If Mid(s, 1, 1) > Mid(s, 2, 1) Then
max1 = 1: max2 = 2
Else
max1 = 2: max2 = 1
End If
For i = 3 To n
ch = Mid(s, i, 1)
If ch > Mid(s, max1, 1) Then
max1 = i
ElseIf ch >= Mid(s, max2, 1) Then
max2 = i
End If
Next i
For i = 1 To n
If Then Text2.Text = Text2.Text & Mid(s, i, 1)
Next i
End Sub
Const n = 10
Dim a (1 To n) As Integer ‘保存原始数据
Dim b(1 To n ) As Boolean ‘数组b用来标记相应的位置有没有找过
Private Sub Command1 _ Click ()
Dim i As Integer , sum As Integer , total As Integer
sum = 0: total = 1 ‘total 表不第几组
i = 1
List 2.Addltem “第”& Str (total) & “组”
Do While sum < n
Do While Not b (i)
List 2.Addltem a (i)
b(i) = True
sum = sum + 1
Loop
If sum < n Then
total = total + 1
List 2.Addltem “第” & Str ( total ) &■“组”
i = 1
Do While b(i) ‘该循环用来查找下一组的开始位置
Loop
End If
Loop
End Sub
Private Sub Form _ Load ()
Dim i As Integer
Randomize
For i = 1 To n ‘产生 n 个不一样的整数,范围为[ 1, n ]
a(i) = Int(Rnd * n ) + 1
Do While
a (i) = Int(Rnd * n ) + 1
Loop
Next i
For i = 1 To n
List1.Addltem a (i)
b (i) = False
Next i
End Sub
Function f(x As Integer , y As Integer ) As Boolean
‘该函数的功能:判断x和数组a中前y个数有没有重复,有重复返回值True,否则False
End Function
●小球落在孔上,入孔:
●垂直落在平板上,停下;
●落在左滑坡向左滚动,右滑坡向右滚动。若遇平板继续滚动,遇孔则入孔;遇隔板或滑坡则停下;或超出边界;
●落在隔板上,可能向左或向右滑落,概率分别为50%。滑落后运动规律与左右滑坡相同。
假设两个隔板不相邻且左右滑坡总是以“八”出现。小球入孔或超出边界则消失,记消失的概率为100%;小球若停下,记消失的概率为0。
如图a所示,小球随机落下,最终消失的平均概率计算过程如下:
(100%+100%+100%+0.5*(100%+0)+0+0+100%+100%+0.5*(100%+100%)+100%)/10=75%
编写VB程序求解小球消失的概率,程序运行界面如图b所示,代码如下,请回答下列问题:
Dim s As string
Dim prob As single
Private Sub Command1 Click()
Dim i As Integer, c As string
s Text1 Text
prob =0
For i =1 To Len(s)
c= Mid(s, i, 1)
If c=“.” Then
prob= prob +100
ElseIf c =“/”Then
prob= prob slope(i, True)
ElseIf c=“\” Then
prob prob+ slope(i, False)
ElseIf c=“|” Then
prob =prob+
End If
Next i
Text2 Text= Str(prob Len(s))
End sub
Function slope(k As Integer, flag As Boolean)As Single
Dim c As string
If flag Then
For j=
c= Mid(s, j, 1)
If c =“.” Then slope =100: Exit For
If c=“|” Or c=“\”Then slope =0: Exit For
Next j
If j< 1 Then slope =100
Else
For j=k+ 1 To Len (s)
c= Mid(s, j, 1)
If c=“.”Then slope =100: Exit For
If c=“|” Or c=“/” Then slope =0: Exit For
Next j
If j>Len(s) Then slope =100
End If
End Function
i = 1: j = 7
key = Int(Rnd( ) * 100)
Do While i < = j
m = (1+j) \2
If a(m) = Key Then
Exit Do
Else If a(m) > Key Then
j = m-1
Else
i = m+1
End If
Loop
数组元素a(1)到a(7)的值依次为“25,42,53,6,77,83,98”,运行上述程序段后,下列条件表达式肯定不成立的是( )
key=Val(Text1.text)
i=1:j=10
Text2.text=””
Do While i<=j
m=Int((i+j)/2+0.5)
If key=a(m) Then Exit Do `Exit Do表示退出循环
If key<a(m) Then j=m-1 Else i=m+1
Text2.text=Text2.text+Str(a(m))
Loop
数组元素a(1)到a(10)的值依次为“8、17、24、30、36、40、55、58、61、66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是( )
Key=Val(Text1.Text)
i=1:j=6
n=0:f=False
flag=False
Do While i<=j And Not f
n=n+1
m=Int((i+j)/2)
If key=a(m)Then f=True
If key <a(m)Then j=m-1 Else i=m+1
Loop
若数组元素a(1)到a(6)的值依次为“3,9,12,17,28,39”,在文本框Text1中输入17后运行该程序,则以上程序段运行结束后,下列说法不正确的是( )

代码中“import music”表示导人music模块,它包含了生成和控制声音的方法,music.pitch(freq,8)表示播放设定频率的曲调,时间为8ns。下载并运行该代码,在蜂鸣器中听到的声音效果是( )
①密码是六位数字,前面两位为59;②最后两位数字相同;③能被12和38整除。
程序界面如图1所示,单击 “帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
Private Sub Command1_click( )
Dim x As Integer, s As Long
Dim y As Integer, i As Integer
For i = 0 To 9999
s = 590000 + i
If Then
x= s mod 10
y =
If x = y Then
List1.AddItem Str(s)
End If
End If
Next i
End Sub
L=1: R=10: n=10: key=78
Do While L<=R
m=Fix((L+R)/2)
If
Then
R=m-1
Else
L=m+1
End If
Loop
For i=1 To R
List1.Additem Str(a(i))
Next i
数组元素a(1)到a(10)的值依次为86,78,78,77,73,69,60,54,54,51,若执行该程序段后,列表框List1中输出的数据个数为3,则方框处的代码为( )
|
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
|
1 |
10 |
3 |
8 |
5 |
6 |
7 |
4 |
9 |
2 |
依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,请回答下列问题:
Private Sub Search_Click()
Const n = 10
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, m As Integer, f As Boolean, key As Integer
‘读取一组正整数,按上述规则存入数组a中。代码略
key = Val (Text1.Text)
If key Mod 2=1 Then i=1 Else i=2
j =n:f= False
Do While i<=j And Not f
If key Mod 2=0 Then
m=(i+j)\2-(i+j)\2Mod2
Else
m= ①
End If
If key = a(m) Then
f = True
ElseIf
Then
j=m-2
Else
i= ②
End If
Loop
If f Then Label1.Caption = Str(m) Else Label1.Caption =“不存在”
End Sub
① ②
小丫编写了一个求中位数的VB程序,功能如下:单击“求中位数”按钮Command1,程序根据输入的n和m,随机产生n个在[0,m]范围内的数。程序运行界面如下所示:
实现上述功能的VB 程序如下:
Dim x(1 To 1000) As Long
Private Sub Command1_Click()
Dim n As Integer, i As Integer, rbound As Integer, mid As Integer
Dim m As Integer, count As Integer
n = Val(Text1.Text)
m = Val(Text2.Text)
List1.Clear
Randomize
For i = 1 To n
x(i) =Int(Rnd * (m + 1)) ' 产生[0,m] 的随机数
List1.AddItem x(i)
Next i
lb = 0
rb = m
Do While lb <rb
mid = (lb + rb) \ 2
①
For i = 1 To n
If ② Then
count = count + 1
End If
Next i
If count > n \ 2 Then
lb = mid + 1
Else
③
End If
Loop
Text3. text = str(rb)
End Sub
程序要实现该功能,画线处应填入的代码为:
①②③
Key = Val(Text1.Text):s = 0: i = 1: j = 7
Do While i <= j
m = (i + j) \ 2
s = s + m
If a(m) > Key Then j = m - 1 Else i = m + 1
Loop
Text2.Text = Str(s)
数组元素a(1)到a(7)的值依次为“12,15,18,20,20,20,29”,在文本框Text1中输入待查数,执行该程序段后,则文本框 Text2 中显示的内容不可能的是( )