a(1) = 2: a(2) = 2: a(3) = 5: a(4) = 6: a(5) = 7
Key = 2
i = 1: j = 5: flag = False Do While i <= j And Not flag
m = (i + j) \ 2 If Key = a(m) Then
s = "找到第" + Str(m) + "个" flag = True: Exit Do
ElseIf Key < a(m) Then j = m - 1
Else
i = m + 1 End If
s = Str(m) + s Loop Label1.Caption = s
执行该程序段后,在标签 Label1 中显示的内容是( )
min=a(1)
n=Val(Text1.Text)
For i=n to 2 step -1
If a(i)<min Then
min=a(i)
Next i
Text2.Text=Str(min)
假设在文本框Text1中输入“8”,则文本框Text2输出的值是( )
例如:当明文M=HelloWorld,密钥K=abc时,密文C=HfnlpYosnd。运算过程如下所示:
明文:HelloWorld
密钥:abcabcabca
密文:HfnlpYosnd
依据上述算法描述设计了如下VB程序。请回答下列问题:
Const MIN_ASC = 65
Function X2D(x As String) As String
Dim s As String, zf As String, i As Integer
s = ""
For i = 1 To Len(x)
zf = Mid(x, i, 1)
If zf >= "a" And zf <= "z" Then
s=s+
Else
s = s + zf
End If
Next i
X2D = s
End Function
Private Sub Command1_Click()
Dim M As String, K As String, C As String, flag As Boolean
Dim i As Integer, t As Integer, ch As Integer, pos As Integer, j As Integer
M = Text1.Text '明文
K = Text2.Text '密钥
t = Len(K)
K = X2D(K)
C = ""
For i = 1 To Len(M)
ch = Asc(Mid(M, i, 1))
flag = False
If ch >= 97 And ch <= 122 Then ch = ch - 32: flag = True
pos= '密钥的字符位置值
If pos = 0 Then pos = t
j = Asc(Mid(K, pos, 1)) '密钥字符的ASCII值
ch = ch - MIN_ASC
j = j - MIN_ASC
ch=
ch = ch + MIN_ASC
If flag Then ch = ch + 32 '设置字母的大小写形式
C = C & Chr(ch)
Next i
Text3.Text = C
End Sub
Private Sub Command1_Click()
Dim a(1 To 8) As Integer
Dim n, i, j, x As Integer
List1.Clear
List2.Clear
a(1) = -5: a(2) = 3: a(3) = 4: a(4) = 12: a(5) = 20: a(6) = 45: a(7) = 70
For j = 1 To 7
List1.AddItem Str(a(j))
Next j
x = Val(Text1.Text)
i = 1
Do While x > a(i) And i < 8 ’找x的插入位置
①
Loop
For j = 8 To i + 1 Step -1 ’移动数据
②
Next j
a(i) = x
For j = 1 To 8
List2.AddItem Str(a(j))
Next j
Label1.Caption = “插入的位置是” &Str(i)
End Sub
①处填入的代码为。
②处填入的代码为。
t=“”: i=0 : j=9 : key=62: f=False
Do While i<=j And Not f
m=Fix((i+j) / 2)
t=t+Str(rn)
If a(m)=key Then
f=True
Elself a(m) > key Then
i=m+1
t=t+“→”
Else
j=m-1
t=t+“←”
End If
Loop
数组元素a⑹到a⑼的值依次为“99, 94, 90, 87, 78, 70, 63, 56, 45, 36”,执行该程序段,t的值是( )
Private Sub Command1_Click()
Dim key As String
Dim a As Integer, b As Integer, ans As Integer, ch As String
key=Text1.Text
i=1
Do While i<=Len(key)
ch=Mid(key,i,1)
If ch>="0" And ch<="9" Then
Else
Exit Do ′退出循环
End If
Loop
b=Val(Mid(key,i+1,Len(key)-i))
ans=a+b
Label1.Caption="算式计算结果为:"+Str(ans)
End Sub
Private Sub Command1_Click()
Dim a As Integer
Randomize
Text1.Text = Str(a)
End Sub
Private Sub Command2_Click()
Dim L As Integer, R As Integer, m As Integer
Dim x As Integer, square As Integer
x = Val(Text1.Text) L = 0
R =
Do While L < R
'改错
square = m * m
If square > x Then
R = m - 1
Else
End If
Loop
Text2.Text = Str(L)
End Sub
Private Sub Command1_Click( )
Dim s As String, tmp As String, As String
Dim n As Integer, i As Integer
Dim flag As Boolean
Dim cnt As Integer ‘存储符合条件的单词数
s=Text1.Text
n=Len(s)
flag False
List1.Clear
For i =1 Ton
c= Mid(s, i, 1)
If c >= “a” And < “z” Or c > = “A” And c < = “z” Then
①
If= Text2. Text Then flag True: cnt= cnt +1
Else
If flag Then List1. AddItem tmp
tmp = “”
②
End If
Next i
If cnt = 0 Then
List1.AddItem “找不到符合条件的单词.”
End If
End Sub
① ②
Private Sub Command1_Click()
Dim result As String, s As String, c As String, cmax as string
Dim i As Integer, j As Integer
s = Text1.Text
Text2.Text = ""
For i = 1 To Len(s)
①
If c >= "A" And c <= "Z" Or c >= "a" And c <= "z" Then
result =②
End If
Next i
Text2.Text = result
j = 2
cmax = Mid(result, 1, 1)
Do While j <= Len(result)
If Mid(result, j, 1) > cmax Then cmax = Mid(result, j, 1)
③
Loop
Text3.Text = cmax
End Sub
1=1:r=6
Key=Val(Text1.Text)
Do While <=r
m=Int((1+r)\2)
If a(m)=Key Then
Exit Do
Elself a(m)>=a(1) Then
ElseIf a(m)<a(1) Then
End If
Loop
上述程序中方框处可选语句为:
①If a(m)<Key And a(r)>Key Then 1=m+1
Else r=m-1
②List1.AddItem "第"+Str(m)+ "值是"+Str(a(m))
③If a(m)>Key And a(1)<=Key Then r=m-1
Else=m+1
则(1)、(2)、(3)处语句依次是( )
i=1: j=n 'n代表学生的数量
Key=Val(Text1.Text)
Do While i<=j
m=
If Val(a(m))>Key Then i=m\2+1 Else j=m\2-1
Loop
List1.Clear
j=j+1
Do While i<=n
If Val(a(2*j))=Key Then List1.AddItem a(2*j-1)+""+a(2*j)
Else exit do
j=j+1
Loop
上述程序中方框处可能的语句是( )
flag = True : p = 0
Key = 5
For i = 1 To Key - 1
L = i
Do While
M = (L + R) \2
p = p + 1
If i * i + M * M < Key * Key Then
L = M + 1
ElseIf i * i + M * M > Key * Key Then
R = M - 1
Else
Text2.Text = Str(i) + “” + Str(M) + “” + Str(key)
flag = False
i = Key
End If
Loop
Next i
If flag Then Text2.Text = “没有符合条件的整数勾股数对!”
上述程序段2个划线处的代码分别为( )
s = ""
low = 1: high = 8
Key = Text1.Text
Do While low <= high
m = (low + high) \ 2
If a(m) < Key Then
high = m - 1
Else
low = m + 1
s = s + Str(low)
End If
Loop
数组元素 a(1)到 a(8)的值依次为“27,25,20,15,12,8,6,5”。该程序段执行后s的值为“5,6”,Text1中输入待查找数可能是( )
①定义一个数组a(1 to 961)。产生一个3到6之间的随机整数k,将十进制数960均分成k份,字符在字符串中的位置除以k的余数决定该字符存放在第几份数据中(余数为1保存在第一份数据中,余数为2保存在第二份数据中……,余数为0保存在第k份数据中);
②用十进制数127减去每个字符的ASCII码值,得到的差作为该字符的密文,并保存在数组a中,同一段内的密文依次存放;
③将随机产生的数k加64后保存在数组元素a(961)中,并一起参与加密;
④将数组a中所有有密文值的数组元素从后往前依次存放到数组b中;
⑤将数组b中的每个密文用3位数字保存,不足3位的前面用0补足,然后依次连接保存在变量sc中;
⑥在文本框Text2中输出sc。
例如:
①若现有待加密的字符串为“zp123”,产生的随机数k=3,则960分成3份,每份可存放320个值,分别为a(1)至a(320),a(321)至a(640),a(641)至a(960);
②由于Asc(“z”) =122,则127-122=5。字符“z”在待加密字符串中的位置是1,除以k的余数为1,因此数字“5”放在第一份数据的第一个位置,即a(1)=5;同理可得,第一份数据为a(1)=5,a(2)=77;第二份数据为a(321)=15,a(322)=76;第三份数据为a(641)=78;
③将随机产生的k与十进制数64的和保存到a数组的最后一个值中,即a(961)=64+3=67;
④将数组a中所有有密文值的数组元素从后往前依次存放到数组b中,得到b(1)=67,b(2)=78,b(3)=76,b(4)=15,b(5)=77,b(6)=5;
⑤将数组b中的每个元素用0补足3位后依次连接并保存在sc中,得到sc=“067078076015077005”;
⑥输出sc。
注:(asc(“0”)=48,asc(“A”)=65,asc(“a”)=97)
Private Sub command1_Click()
Dim a(1 To 961) As Integer
Dim sr, sc As String
Dim i, j, k, m, n, t As Integer
Dim b(1 To 961) As Integer
Randomize
k = Int(Rnd * 4 + 3)
sr = text1.Text
For i = 1 To 961
a(i) = -1
Next i
a(961) = k + 64
t = 960 / k
For i = 1 To Len(sr)
m = i Mod k - 1
n = i \ k + 1
If i Mod k = 0 then n = n - 1: m = m + k
① = 127 - Asc(Mid(sr, i, 1)) ‘将密文存储到数组a中
Next i
For i = 1 To Len(sr) + 1
j = j + 1
Do While a(j) = -1
j = j + 1
Loop
b(Len(sr) + 2 - i) = a(j) ‘将有密文值的a数组元素存储到数组b中
Next i
For i = 1 To Len(sr) + 1
sc = ② ‘连接密文并保存到sc中
Next i
text2.Text = sc
End Sub
Function space(x As Integer) As String
For i = 1 To ③
space = space & "0"
Next i
End Function
① ② ③
ans = 0: L = 0: R = 7
key = 2 ^ (Int(Rnd * 5))
Do While L <= R
m = (L + R + 1) \ 2
If a(m) > key Then
L = m + 1
ans = ans + 1
Else
R = m - 1
ans = ans - 1
End If
Loop
数组 a(0)到 a(7)的值依次为16,16,8,8,4,2,2,1,该程序运行后,ans 的值不可能的是( )
Private Sub Command1_Click()
Dim a(1 to 10) As Integer
Dim i As Integer, j As Integer, Key As Integer, c As Integer, m As Integer
Dim flag As boolean
flag = True: c = 0
i = 1: j = 10
Key = Int(Rnd() * 17) + 8
Do While i <= j And flag = True
c = c + 1
m = (i + j) \ 2
If Key = a(m) Then
flag = False
ElseIf Key > a(m) Then
j = m - 1
Else
i = m + 1
End If
Loop
End sub
数组元素a(1)到a(10)的值依次为50、45、40、35、27、24、15、7、5、3,程序运行后变量c的值可能是:( )
实现上述功能的VB程序如下:
Const n=11
Dimd(1 To n)As Iteger
Private Sub Form_ Load( )
'生成n个随机整数存入数组d,并在Label1中显示,代码略
End Sub
Private Sub Command1_Click( )
Dim sum As Integer, L As Integer, R As Integer, c As Integer
①
c=0
For L=1 To n-1
R=n
Do While L< R
If ② Then
List1.Addtcem Str(d(L))& " " & Str(d(R))
c=c+1
Exit Do 'Exit Do表示退出循环
Else
End If
Loop
Next L
List.Addtem "找到和为" "& Str(sum)& "的数对共" & Str(c)&"组"
End Sub
请回答下列问题:
① ②
Private Sub Command1_Click()
Dim key As Integer, i As Integer, j As Integer, ans As Integer
Dim n As Integer
n = 10
Dim x(1 To 10) As Integer
x(1) = 5 : x(2) = 52 : x(3) = 2 : x(4) = 72 : x(5) = 86
x(6) = 3256 : x(7) = 123 : x(8) = 25 : x(9) = 30 : x(10) = 87
key = Val(Text1.Text)
i = 1 : j = n : ans = 0
Do While i < j
m = (i + j + 1) \ 2
If key <= x(m) Then
j = m - 1 : ans = ans + 1
Else
i = m + 1 : ans = ans + 2
End If
Loop
End Sub
在Text1中输入3256,单击Command1,程序运行完毕后,以下变量的值不正确的是( )
x=Val(Text1.Text)
i=1:j=n-1
Do While i<=j
m=(i+j)\2
If x<a(m) Then i=m+1 Else j=m-1
Loop
For k=n To Step-1
a(k)=a(k-1)
Next k
a(i)=x
Dima(1 To 100) As Integer, n As Integer
Private Sub Form_ Load()
'产生n个随机整数,按升序排序并在标签Label1中显示
End Sub
Private Sub Command1_Click()
Dim x As Integer, k As Integer, m As Integer
Dim key As Integer, L As Integer, R As Integer
key= Val( Text1. Text)
L=1 : R= n
Do While L<=R
m=(L+ R) \2
If Then R=m-1 Else L=m+ 1 '改错
Loop
x=L
If ① Or x> n Then
Label2. Caption= "该数未找到"
Else
For ②
a(k- 1)=a(k)
Next k
Label2. Caption=" "
For k=1 To n-1
Label2. Caption= Label2. Caption+Str(a(k))
Next k
n= n -1
End If
End Sub
① ②