Private Sub Command1_Click()
Dim dx As String, dw As String
Dim s As String, c As String
Dim ch As String
Dim i As Integer
dx = "零壹贰叁肆伍陆柒捌玖拾"
dw = "亿仟佰拾萬仟佰拾元"
s = Text1.Text
c = ""
If Len(s) > 9
Text2.Text = "输入的数据超出所能转换的范围"
Else
For i = 1 To Len(s)
ch = Mid(s, i, 1)
c = c + + Mid(dw, 9 - Len(s) + i, 1)
Next i
Text2.Text = c + "整"
End If
End Sub
Key=Val(Text1.Text)
i=1:j=10
flag=False
s=””
Do While i<一i And NOt flag
mid1=Int(i+(j-i)/3)
mid2=Int(j-(i-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
j=mid2+1
Else
i=mid1+1
i=mid2-1
End If
s=s&” ”& mid1 & “:”& mid2
Loop
Text2.Text=s
已知数组a(1 To 10)中的数据分别是12,21,34.45,59,63,72,86,94,100,在文本框Text1中输入34,程序运行后文本框Text2中显示的内容是( )
K=Val(Text1.Text)
left1=1:right1=10
Do While(left1<=right1)
mid1=(left1+right1)\2
If a(mid1)<=k Then left1=mid1+1 Else right1=mid1-1
Loop
Text2.Text=Str(right1)
已知数组a(1)到a(10)的原始数据为1,4,5,5,5,5,8,9,9,10。程序运行时,在文本框Text1中输入5,文本框Text2显示的内容是( )
k = Val(Text1.Text)
i = 1: j = 6: Label1.Caption = ″ ″: f = False
Do While i <= j And Not f
m = (i + j) \ 2
If a(m) = k Then f = True
If a(m) > a(i) Then
If a(i) <= k And k < a(m) Then j = m - 1 Else i = i + 1
Else
If a(m) < k And k <= a(j) Then i = i + 1 Else j = j - 1
End If
Label1.Caption = Label1.Caption + Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输入的值为35,执行该程序段,标签Label1中显示的值是( )
a(l) = 5: a(2) = 16: a(3) = 22: a(4) = 28: a(5) = 35
a(6) = 43: a(7) = 52: a(8) = 67: a(9) = 78: a(10) = 89
i = 1: j = 10: n = 0: flag = True
Key = Val(Textl. Text)
Do While i <= j And flag = True
m = (i + j) \ 2
If a(m) = Key Then
flag = False
Elself a(m) < Key Then
i = m + 1
n = n - 1
Else
j = m - 1
n = n + 1
End If
Loop
变量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
a(1)=2
For i=2 to 7
a(i)=a(i-1)*2-1
Next i
i = 1 : j = 7
Do While i <= j
m =(i + j)\ 2
If a(m)= Key Then Exit Do
If Key < a(m) Then j = m - 1 Else i = m + 1
Loop
若key的值为15,则程序执行结束后,j的值为( )
加密规则如下表所示:
原字 |
A |
B |
C |
… |
X |
Y |
Z |
a |
b |
c |
… |
x |
y |
z |
密字 |
z |
y |
x |
… |
c |
b |
a |
Z |
Y |
X |
… |
C |
B |
A |
注:“A”的ASCⅡ码值是65,“a”的ASCI码值是97。
程序运行界面如图所示
Private sub Cmd1- Click()
Dim i As Integer, s As String, c As String, ans As String
①
For i=1 To Len(s)
c= Mid(s, i, 1)
If c<="z “And c >=”a"Or c<=”Z” And c >=”A” Then
c=②
End If
③
Next i
TxtOut. Text =ans
End Sub
Private sub Commandl_Click ()
Dim s As String
Dim n As Integer
Dim cnt As Integer
Dim i As Integer
Dim num As single
Dim cd As Single
Dim ave As single
s=Text1.Text
n=Len (s)
num=0
cd=0
cnt=0
For i=1 To n
①
If c>=“a” And c<=“z”Or c>=“A”And c<=“Z”Then
cnt=cnt+1
Elself c>=“0”And c<=“9”Then
cnt=cnt+1
Else
If cnt>0 Then
num=num+1
cd=cd+cnt
②
End If
End If
Next i
If cnt>0 Then
num=num+1
cd=cd+cnt
End If
ave=cd/num
Label1. Caption=“总共有”+Str(num)+“个单词,平均长度为”+str(ave)
End sub
① ②
Dim a(1 To 10) As Integer
Function Search(L As Integer, R As Integer) As Integer
M = (L + R) \ 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
End Function
Private Sub Command1_Click()
Label1.Caption = "“峰顶”值是:" + Str(Search(1, 10))
End Sub
上述程序中划线处可选语句为:
①Search = Search(M + 1 , R)
②Search = Search(L , M - 1)
③Search = a(M)
则(1)(2)(3)处的语句依次是( )
i=1:j=n
Do While i+1<j
m=(i+j)\2
If a(m+1) -a(m) >a(m) -a(m-1) Then
Else
End if
Loop
Label 1.Caption=“相邻两个元素的最大差值是”+Str(a(j) -a(i) )
上述程序段两个方框处的语句分别为( )
Dim a(1 To 10)As Integer
Function find(L As Integer,R As Integer,key As Integer)
As Integer
If L>R Then
find = 0:Exit Function
Elself a(L)>= key Then
find = L:Exit Function
Else
①
If a(m)<key Then
find = find(M + 1,R,key)
Elself ② Then
find = find(L,M - 1,key)
Else
find = M
End If
End If
End Function
Private Sub Command1_Click()
Dim k As Integer
Dim p As Integer
k = Val(Text1.Text)
③
Text2.Text = a(p)
Text3.Text = Str(p)
If p = 0 Then
Text2.Text = "无"
End If
End Sub
Private Sub Form_Load()
a(1)= 3:a(2)= 3:a(3)= 3:a(4)= 4:a(5)= 7:a(6)
=7:a(7)= 10:a(8)= 13:a(9)= 19:a(10)= 21
For i= 1 To 10
Listl.AddItem Str(a(i))
Next i
End Sub
①②③
i=1: j=12: k=0: S=""
key=Val(Text1.Text) : c= "N" : flag= False
Do While i <= j And flag = False
m=(i+j+1)\2: k=k+1
If key = a(m) Then c= "Y" : flag= True
If key > a(m) Then j=m-1 Else i=m+ 1
s=s & Str(a(m))
Loop
Text2.Text = s : Text3.Text = c
数组a(1)到a(12)的值依次为“99,91,85,76,68,61,53,42,34,27,20,13”,执行该程序段后,下列说法正确的是( )
i= 1 : j =9 : n =0
key=Val(Text1.Text)
Do While i<= j
N=n+1
M=Fix((i + j) / 2)
If key = d(m) Then Exit Do
If key<d(m) Then j= m - 1 Else i=m+1
Loop
数组元素d(l)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是( )
'数组元素f(1)到f(9)赋初值为0,代码略
Key = Val(Text1.Text)
i = 1: j = 9: flag = False
Do While i <= j And flag = False
m = (i + j) \ 2
f(m) = 1
k = k + 1
If a(m) = Key Then
flag = True
ElseIf a(m) > Key Then
j = m - 1
Else
i = m + 1
End If
Loop
整型数组元素a(1)到a(9)为升序序列,在文本框Text1中输入待查找数,执行该程序段后,f(1)到f(9)各元素值为“0,0,0,0,1,1,1,0,0”,则下列选项中描述正确的是 ( )
n个正整数由文本框Text1输入,依次存储到a数组中,b(1 to 25)中存储100内的素数,c数组存储每一组的数字个数及对应数字,d数组存储每一组内所含的质因子,相同质因子只存储一次,最后分组情况显示在列表框List1中。
c数组初始状态:
组别 |
第一组 |
第二组 |
… |
||||||||||||
位置 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
… |
值 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
… |
d数组初始状态:
组别 |
第一组 |
第二组 |
… |
|||||||||||||
位置 |
1 |
2 |
3 |
4 |
5 |
6 |
… |
25 |
26 |
27 |
28 |
29 |
30 |
… |
50 |
… |
值 |
0 |
0 |
0 |
0 |
0 |
0 |
… |
0 |
0 |
0 |
0 |
0 |
0 |
… |
0 |
… |
若第一个数据为70,确定分组的过程为:先查找第一组内所含的质因子中是否含有70的质因子,未找到,则c数组中表示第一组数据个数的值加1,并将70添加到c数组的第一组内,同时在d数组第一组中依次添加70所含的各个质因子。
c数组变化情况:
组别 |
第一组 |
第二组 |
… |
||||||||||||
位置 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
… |
值 |
1 |
70 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
… |
d数组变化情况:
组别 |
第一组 |
第二组 |
… |
|||||||||||||
位置 |
1 |
2 |
3 |
4 |
5 |
6 |
… |
25 |
26 |
27 |
28 |
29 |
30 |
… |
50 |
… |
值 |
2 |
5 |
7 |
0 |
0 |
0 |
… |
0 |
0 |
0 |
0 |
0 |
0 |
… |
0 |
… |
尝试将第2~n个整数分组。在确定某数分组的过程中,若已有的组内不存在该数所含的质因子,则将其分到第一个符合条件的组;否则,将其分到新生成的组中。
分组完毕后数组存储情况如下表。
c数组:
组别 |
第一组 |
第二组 |
… |
||||||||||||
位置 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
… |
值 |
2 |
70 |
99 |
0 |
0 |
0 |
0 |
3 |
25 |
54 |
11 |
0 |
0 |
0 |
… |
d数组:
组别 |
第一组 |
第二组 |
… |
|||||||||||||
位置 |
1 |
2 |
3 |
4 |
5 |
6 |
… |
25 |
26 |
27 |
28 |
29 |
30 |
… |
50 |
… |
值 |
2 |
5 |
7 |
3 |
11 |
0 |
… |
0 |
5 |
2 |
3 |
11 |
0 |
… |
0 |
… |
按照上述要求编写一个VB程序,其运行界面如图所示。
Const n = 6 '数据个数
Dim a(1 To n) As Integer '存储原始数据
Dim b(1 To 25) As Integer '存储100以内的素数
Dim c(0 To (n + 1) * n) As Integer '存储每一组的数字个数及对应数字
Dim d(1 To 25 * n) As Integer 'd数组存储每一组内含有的质因子
Private Sub Command1_Click()
Dim t As Integer, i As Integer, j As Integer
Dim k As Integer, m As Integer, p As Integer
Dim y As Integer, zu As Integer
Dim st As String
For t = 1 To n
k = 1
i = 1
Do While d((k - 1) * 25 + i) <> 0
If a(t) Mod d((k - 1) * 25 + i) = 0 Then
i = 0
End If
i = i + 1
Loop
m = (k - 1) * (n + 1) '每一组存储数字个数的所在位置
c(m) = c(m) + 1
For j = 1 To 25
If a(t) Mod b(j) = 0 Then
i = i + 1
End If
Next j
Next t
p = 0
Do While c(p) > 0
st = ""
For i = 1 To c(p)
st = st + Str(c(p + i))
Next i
zu = p \ (n + 1) + 1
List1.AddItem "第" + CStr(zu) + "组为:" + st
'Cstr的功能:将数值型转为字符串型
p = p + n + 1
y = y + 1
Loop
List1.AddItem "至少分:" + CStr(y) + "组"
End Sub
Private Sub Form_Load()
'读取文本框Text1中的各个数据依次存储到数组a中,存储100以内的素数到数组b中,代码略
End Sub
left=1
right = 100
cnt=0
while left<=right:
mid=(left+right)//2
cnt +=i
if mid==53:
Break
elif mid<53:
left = mid+1
else:
right = mid-1
print("采用二分查找方法,在1-100中查找53需要比较()次".format(cnt))
如下图所示,其中第一层蛋糕有5种,体积分别为4、3、5、8、1;第二层有4种,体积分别为6、4、8、5;第三层有7种,体积分别为5、9、4、5、7、6、4。所选方案须符合“第一层<第二层<第三层”,如:第层选3,第二层选4第三层选6。方案共有31种。
请在划线处填入适当的代码。
Dim a(100) As Integer, b(100) As Integer, c(100) As Integer
'a、b、c数组分别存储上、中、下三层蛋糕的体积
Dim i As Integer, j As Integer, cnt As Integer, ans As Integer
Dim na As Integer, nb As Integer, nc As Integer
'na,nb、nc分别记录上、中、下三层蛋糕的种类数量
Private Sub Command1_ Click( )
Dim L As Integer, R As Integer, m As Integer
For i=1 To na-1
For j=na To i+1 Step-1
If a(j) < a(j-1) Then tmp=a(j) : a(j) =a(j-1) : a(j-1)= tmp
Next j
Next i
For i=1 To nc-1
For j=nc To i+1 Step-1
If c(j) < c(j-1) Then tmp= c(j) :c(j)=c(j- 1) :c(j- 1)= tmp
Next j
Next i
For i=1 To
L=0 : R=na+ 1
Do While L+1<R
m=(L+ R)\ 2
If a(m) < b(i) Then
L=m
Else
R= m
End If
Loop
cnt= L
L=0 : R=nc十1
Do While L+1<R
m=(L+R)\2
If Then
R= m
Else
End If
Loop
cnt=cnt * ()
ans= ans+cnt
Next i
Label1. Caption="共有"十Str(ans) + "种方案
End Sub
Private Sub Form_ Load( )
'随机生成三层蛋糕的数量存储在na、nb、nc中,生成三层蛋糕的体积存储在a、b、c数组中,并输出,代码略
End Sub
Key = Val(Text1.Text)
c=0:i=1:j=10
Do While i<=j
m=(i+j)\2
c=c+1
If key >= a(m) Then i=m+1 Else j=m-1
Loop
Text2.Text = Str(c)
数组a(1)到a(10)的值依次为“10,15,15,25,27,28,33,35,36,56”,执行该程序段后,文本框Text2中显示的值为3,则key值可能是( )