部分程序代码如下:
Public number As String '货物编号
Public na As String '货物名称
Public co As String '货物数量
Private Sub Command1Click()
Dim flag As Integer '查询结果标志
number = Text1.Text
na = Text2.Text
co = Text3.Text
If (number = "" And na = "" And co = "") Then MsgBox ("你还没有输入查询条件") ’第一种情况
If number <> ""Then ’第二种情况
flag = searchnum(1, n) 'n 表示总的货物种类数量
List1.AddItem id(flag) + n(flag) + c(flag)
If flag = -1 Then MsgBox ("查询无结果,检查是否输入有误")
End If
If na <> "" Then ‘第三种情况
flag = searchna(1, n) 'n 表示总的货物种类数量
List1.AddItem id(flag) + n(flag) + c(flag)
If flag = -1 Then MsgBox ("查询无结果,检查是否输入有误")
End If
If co <> "" Then ‘第四种情况
flag = searchco(1, n)
If flag = 0 Then MsgBox ("查询无结果,检查是否输入有误")
End If
End Sub
Function searchnum(i, j) As Integer '按编号查询函数
Dim m As Integer
Do While i <= j
m = Fix((i + j) / 2)
If id(m) = number Then
searchnum = m: Exit Function '查询到结果返回值并结束该函数
End If
If id(m) > number Then ① Else i = m + 1
Loop
searchnum = -1
End Function
Function searchna(i, j) As Integer '按名称查询函数
For i = 1 To j Step 1
If n(i) = na Then searchna = i: Exit Function
Next i
searchna = -1
End Function
Function searchco(i, j) As Integer '按货物数量函数
Dim f As Integer
f = 0
For i = 1 To j Step 1
If ② Then
List1.AddItem id(i) + n(i) + c(i)
f = 1
End If
Next i
searchco (f)
End Function
回答下列问题:
L = 1: R = 10: Key = 21
Do While L <= R
m = (L + R) \ 2
If a(m) <= Key Then
L = m + 1
Else
R = m - 1
End If
Loop
数组元素 a(1)到 a(10)的值依次为“ 3, 9, 21, 21, 21, 21, 27, 28, 39, 40”,执行该程序段,变量R、a(R)的值分别是( )
i = 1: j = 10: n = 0: flag = True
Key = Val(Text1.Text)
Do While i <= jAnd flag = True
m = (i + j) \ 2
If a(m) = Key Then
flag = False
ElseIf a(m) < Key Then
i = m + 1
n = n - 1
Else
j = m– 1
n = n + 1
End If
Loop
数组元素a(1)到a(10)的值依次是“5,16,22,28,35,43,52,67,78,89”,变量n的值最终是0,则文本框Text1输入的数值范围可能是( )
首先,分别求出特加密ASCII字符的ASCII码,然后用7位二进制来表示,比如“4”的ASCII码为十进制52,转换为7位二进制为“0110100”
其次,从左至右依次记为第1、2、3....7位,分别把第3、4、5位取反,即0变1, 1变0,至此“0110100”变为“0101000”,将此二进制转换为ASCII码为40,对应的字符为“(”,即“4”经过加密后得到加密字符左括号“(”。
在文本框Text1中输入ASCII字符,单击命令按钮Command,则在文本框Text2中显示经过加密的字符。VB代码如下,程序界面如图所示。
上述加密与解密过程实际上是可以互逆的,请完成下列问题。
Private Sub Command1_Click()
Dim a(1 To 7) As Integer
Dim i As Integer, j As Integer, n As Integer
Dim ascl As String, s As String, s1 As String
i=1
S=Text1.Text
Text2.Text=“”
Do While i=Len(Text1.Text)
s1= Mid(s, i, 1)
ascl=Asc(s1)
n=0
For j=7 To 1 Step-1
If j=3 Or i=4 Or j=5 Then
a(j)=
Else
a(j) = asc1 Mod 2
End If
ascl=asc1\2
n=
Next j
Text2.Text =Text2.Text+
i=i+1
Loop
End Sub
Key = Int(Rnd * 49) * 2 + 1
s = 0: i = 1: j = 10
Do While i <= j
m = (i + j) \ 2
If Key = a(m) Then Exit Do If Key < a(m) Then
j = m - 1: s = 2 * s
Else
i = m + 1: s = 2 * s + 1
End If Loop
数组a(1)到a(10)的值依次为“2,6,7,15,20,24,27,43,52,63”,执行该程序段后,s的值不可能为( )
i=1:j=n
flag=False
Do While i<=j And Not flag
m=(i+j+1)\2
If a(m) <a(m-1) And a(m) >a(m+1) Then
⑴
ElseIf a(m) >a(m-1) And a(m) >a(m+1) Then
⑵
ElseIf a(m) >a(m-1) And a(m) <a(m+1) Then
⑶
End If
Loop
list1.Add Item Str(a(m) ) &Str(m)
上述程序方框出可选语句为:i=m+1②j=m-1③flag=true
则(1)、(2)、(3)处语句依次是( )
Private Sub Command1_Click()
Dim a(1 To 9) As Integer, key As Integer, i As Integer, j As Integer
Dim mid1 As Integer, mid2 As Integer
a(1)=4: a(2)=22: a(3)=27: a(4)=32: a(5)=35: a(6)=44: a(7)=56: a(8)=59: a(9)=78
key=Val(Text1.Text)
i=1: j=9
flag=False
Do While i<=j And Not flag
Mid1=i+(j-i)\3
mid2=j-(j-i)\3
If key=a(mid1) Then
flag=True
ElseIf key<a(mid1) Then
j=mid1-1
ElseIf key=a(mid2) Then
flag=True
ElseIf key>a(mid2) Then
i=mid2+1
Else
i=mid1+1
j=mid2-1
End If
Loop
If flag Then Label1.Caption=″查找成功!″Else Label1.Caption=″查找失败!″
End Sub
该程序段执行时,在文本框Text1中输入36,单击命令按钮Command1,程序运行结束后,i和j的值为( )
while True:
for event in pygame.event.get(): #()
if event.type==pygame.QUIT: #( )
sys.exit() #退出程序
if event.type==pygame.MOUSEBUTTONDOWN: #( )
i=1: j=63: n=0
Do While i<=j
M=(i+j)\2
If Key=a(m) Then
Exit Do
Elself Key<a(m) Then
J=m-1:n=n-1
Else
I=m+1:n=n+1
End if
Loop
数组元素a(1)到a(63)存放着递增的数据。若执行该程序段后n的值为6,则下列表达式成立的是( )
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) \ 2 Mod 2
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
① ②
i=1:j=25
n=0
Do While i<=j
m=(i+j+1)\2
n=n+1
If key=a(m)Then Exit Do
If key>a(m)Then i=m+1Elsej=m-1
Loop
Labe11.Caption=Str(n)
数组元素a(1)~a(25)的值依次为1~25,若查找键key为下列选项的值,程序段执行后,标签Label1中显示的内容与其他三项不同的是( )
为实现上述功能的程序如下,请在划线处填入合适的语句或代码。
Dim xm1(1 To 20) As String, xh1(1 To 20) As String′数组xm1、xh1分别存储选报课程1的学生的姓名和学号
Dim xm2(1 To 30) As String, xh2(1 To 30) As String′数组xm2、xh2分别存储选报课程2的学生的姓名和学号
Const n = 20, m = 30
Private Sub Form_Load()
'获取选报数据,并显示在列表框List1和List2中
'代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, tt As String
List2.Clear
For i = 1 To m - 1
For j =Step -1
If xm2(j) < xm2(j - 1) Then
tt = xm2(j): xm2(j) = xm2(j - 1): xm2(j - 1) = tt
tt = xh2(j): xh2(j) = xh2(j - 1): xh2(j - 1) = tt
End If
Next j
Next i
For i = 1 To m
List2.AddItem xh2(i) + “ ” + xm2(i)
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, w As Integer, tt As String, k As Integer
For i = 1 To n
p = 1
Do While p <= q
w = (p + q) \ 2
If xm1(i) = xm2(w) Then
List3.AddItem xh1(i) + “ ” + xm1(i)
k = k + 1
End If
If Then
q = w - 1
Else
p = w + 1
End If
Loop
Next i
List3.AddItem “共有” + Str(k) + “ 位同学”
End Sub