Privvate Sub Command1Click( )
Dim man As Integer,woman As Integer,child As Intger,s As Integer
For woman = 1 To 15
Child = 30 – man – woman
S = 20 * man + 30 * woman + 10 * child
If Then
List1.AddItem Str(man) + Str(woman) + Str(child)
End If
Next woman
Next man
End Sub
Private Sub Command1_Click()
Dim i As Integer, S As String
Dim str As String, ch As String
str = Text1.Text
List1.Clear
For i = 1 To Len(str)
ch = ①
S = convert(ch)
List1.AddItem ch & "==>" & S
Next i
End Sub
Private Function convert(ch As String) As String
Dim m As Integer, k As Integer, n As Integer, i As Integer
convert = ""
n = Asc(ch)
Do While n > 0
②
convert = m & convert
If m = 1 Then
k = k + 1
End If
n = n \ 2
Loop
For i = 1 To 7 - Len(convert) '将字符的二进制代码补足7位
convert = "0" & convert
Next i
If k Mod 2 = 0 Then
convert = ③
Else
convert = "0" & convert
End If
End Function
程序中划线处①的代码应为。
程序中划线处②的代码应为。
程序中划线处③的代码应为。

输入火柴棍的数量n(n≤24),计算可以拼出多少个“A+B=C”的等式?
要求:
①加号与等号各自需要两根火柴棍。
②A,B,C为非负的整数,且该数非零时,最高位不能是0。
③如果A≠B,则A+B=C与B+A=C视为不同的等式。
④n根火柴棍必须全部用上。
小明发现,数字1用的火柴棍最少,24根火柴棍全部用上的话,能拼出最大的整数A或B不超1111,C不超过2222,他编写了一个VB程序,在文本框Text1中输入火柴棍的数量,单击“统计”按钮Command1,在文本框Text2中输出“A+B=C”的方案数,程序界面如图b所示。

实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim a(0 T0 2 222)As Integer ‘存储每个整数需用的火柴棍数
Dim n As Integer,ans As Integer
Dim i As Integer,j As Integer
n=Val(Text1.Text)
For i=0 To 2 222
a(i)=0
Next i
‘得到0~9中每个数字需用的火柴棍数
a(0)=6:a(1)=2:a(2)=5:a(3)=5:a(4)=4
a(5)=5:a(6)=6:a(7)=3:a(8)=7:a(9)=6
n= ① ‘去掉等号与加号后,剩余的火柴棍数量
For i=10 To 222 ‘计算出10~n中每个数字需用的火柴棍数
a(i)=a( ② )+a(i Mod 10)
Next i
ans=0
‘枚举0~n中任意两个数,判断是否符合A+B=C的火柴棍数量
For i=0 To 1 111
For j=0 To 1 111
If a(i)+a(j)+a( ③ )=n Then
ans=ans+1
End If
Next j
Next i
Text2.Text=Str(ans)
End Sub
① ② ③
图1
图2
Private Sub CmdTJ_Click()
Dim count(25) As Integer
Dim ch, ch2 As String
Dim m As Integer
ch = Text1.Text
For k = 1 To Len(ch)
①
n = Asc(ch2)-Asc(“a”)
If n >= 0 And n <= 25 Then
count(n) = count(n) + 1
List1.AddItem "字母" + ch2 + "出现" + Str(count(n)) + "次"
End If
Next k
m = count(0)
For k = 1 To 25
If ② Then m = count(k)
Next k
Label1.Caption = "字母最高出现" + Str(m) + "次"
End Sub
① ②
(单选,填字母:A .执行次数介于1-10; B .执行次数介于10-20; C .执行次数介于20-25)
Dim p As Integer, q As Integer, s As Integer, t As Integer
p = Val(Text1.Text)
t = 0
For q = p+ 1 To 2 * p
s = (p * q) Mod (q - p)
If s = 0 Then
t = t+ 1
End If
Next q
Label1.Caption = Str(t)
该程序段运行时,在文本框T extl中输入8 , 则在标签Labell中显示的内容是( )
1)若是运算符“+”或“-”保存该位置并结束查找。
2)若是第一次碰到“*”或“/”,保存该位置,若不是第一次碰到“*”或“/”,继续往左边查找。
3)若是“)”,调用函数找到和它对应的“(”位置,跳过该括号,继续往左查找。
4)若是非运算符,继续往左查找。
运行界面如下图:

实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Function find(y As String , x As Integer ) As Integer
’该函数的功能是:返回表达式 y 中和位于第 x 位置的“)”配对的“(”的位置,代码略
End Function
Private Sub Commandl _ Click ()
Dim s As String , t As Integer , temp As Integer , p As Integer
s = Text1. Text ‘输入表达式
t = Len (s):p = 0
Do While t>0
If Mid ( s, t , 1) =“*” Or Mid ( s, t , 1) =“-” Then ‘处理+、-
temp=t
Exit Do
End If
If
① Then 处理 *、/
temp = t
P=1 ‘用来标记乘号或除号已经出现了
End If
If Mid(s, t, 1)= ")" Then ‘处理括号
②
End If
t=t -1
Loop
Text 2.Text = Str (temp)
End Sub
① ②
参选地区用数字1,2,3……N表示,每个地区所属的省份依次存入数组a(1)到a(N),若1号地区的省份编号是3,即a(1)=3。分析可知,所求区间的长度至少为K(省份的数量),最大为N(地区的数量)。我们可以通过二分K到N之间的数求得最小区间长度。例如有10个参选地区,分别来自于5个不同的省份,从左到右排列,地区编号依次为2,1,2,4,3,3,5,5,3,5,则最小的一段包含所有5个地区的区间是从第2个到第7个地区,区间长度为6。
Dim a(1 To 100) As Integer, K As Integer, N As Integer
Private Sub Form_Load()
‘产生N的值,表示地区数,产生K的值,表示省份数
‘产生编号为1到N的地区的省份编号,并存储在数组a中
‘代码略
End Sub
Private Sub Command1_Click()
Dim M As Integer
i = K: j = N
Do While i <= j
If bh(M) = True Then
j = M -1
ans = M
Else
i = M+1
End If
Loop
Text1.Text = Str(ans)
End Sub
Function bh(M As Integer) As Boolean
Dim f(1 To 25) As Integer ‘f(i)表示是否包含省份为i的地区
Dim t As Integer
bh= False
For i = 1 To N-M + 1 ‘枚举以i为起点的M个地区中各个省份是否都包含
For j =
f(a(j)) = 1
Next j
t= 0
For j = 1 To K
Next j
If t = K Then bh= True: Exit Function
For j = 1 To K
f(j) =0
Next j
Next i
End Function
Private Sub Command1_Click()
Dim y As Integer, r As Integer
Dim s As String, t As String
t = "0123456789ABCDEF"
s = ""
y = ①
Do While y > 0
r = y Mod 16
s = ②
y = ③
Loop
Label2.Caption = Text1.Text + "转化成十六进制数为:" + str(s)
End Sub
例如,共有N=5个景点,每个景点连接的下一个景点分别是 2,4,2,3,1。
| 景点号 | 1 | 2 | 3 | 4 | 5 |
| 下一景点号 | 2 | 4 | 2 | 3 | 1 |
则他可以从2号景点出发,最多可以游玩2号、3号、4号三个景点。程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer, d(1 To 100) As Integer '数组 a 存放下一景点号
Dim jd As String, m As String, c As Integer, i As Integer
Dim s As Integer, p As Integer, k As Integer, ans As Integer
jd=Text1.Text+","
s=0 : c=0
For i=1 To Len(jd)
m=Mid(jd,i,1)
If m<>"," Then
①
Else
c=c+1 : a(c)=s: s=0
End If
Next i
For k=1 To 100 d(k)=0
Next k
ans=0: k=0
For i=1 To c '枚举起点
If d(i)=0 Then p=i
Do While p<=c
If d(p)=0 Then
k=k+1 :d(p)=k
Else
②
If y>ans Then ans=y k=0
Exit Do
End If
'改错
Loop
End If
Next i
Text2.Text=Str(ans)
End Sub
① ②
import math
h = 500
g = 9.8
t = math.sqrt(2*h/g)
hx = g*(t-1)*(-1)/2
hh = h-hx
print(“小球最后1秒下落的位移是:”,hh,“m”)
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As Integer, t As Integer, k As Integer
s = 0
For i = 1 To 1000
n = i
t = 0
k = 0
Do While n > 0
If n Mod 2 = 1 Then t = t + 1 Else k = k + 1
Loop
If Then s = s + 1
Next i
Text1.Text = Str(s)
End Sub
i=
while (i%3!=2 i%5!=3 or i%7!=2):
i=
print(i)
下列说法正确的是( )
(注:如图a所示,则需翻转第二行第二列、第四行第二列两个棋子便可使得棋盘纯黑)
一开始小明不知从何人手,但很快他发现了突破点。他先将棋盘状态利用二进制进行编码并存储在数组中,编码规则为0表示白,1表示黑,顺序为从左至右,从上至下,则第10题图a中的初始状态可以表示为数列1011000111110001。
随后,他将被选中的棋子的位置也进行二进制编码,0表示不选中,1表示被选中,则可以用一个16位二进制编码表示。例如,二进制编码0000010000000100表示选中了第2行第2列、第4行第2列这两个棋子,随后将编码转化为十进制数,即2^10+2^2= 1028;于是,整张棋盘的所有选棋子方案为000000000000000 ~ 11111111111111,也就是十进制下的0~65535,利用枚举算法即可找到最优方案。
程序界面如图b所示,VB代码如下,请回答下列问题。
Dim a(16) As Integer, b(16) As Integer, min_ _c As Long
'a数组储存棋盘原状态,b数组储存翻转后的棋盘状态
Function check() As Boolean '判断棋盘是否纯色
Dim flag As Boolean, i As Integer
flag= True
For i=1 To 15
If b(i) <> b(i+1) Then flag= False
Next i
check = flag
End Function
Private Sub Command1_Click()
Dim k As Integer, c As Integer, i As Long, j As Long
For i=0 To 2^16- 1
For j=1 To 16 '初始化棋盘
b(j)=a(j)
Next j
k=16
c=0
j=i
Do While j>0
If Then
b(k)=1- b(k)
If k> 4 Then b(k-4)=1-b(k-4)
If k< 13 Then b(k+4)=1- b(k+4)
If k Mod 4 <> 0 Then b(k+1)=1- b(k+1)
If Then b(k-1)=1-b(k- 1)
c=c+ 1
End If
j=j\2
k=k- 1
Loop
If Then
min_ c= c
End If
Next i
If min_ c=17 Then Label1. Caption= "无法翻转为纯色!" Else Label1. Caption= Label 1. Caption+Str(min_c)
End Sub
Private Sub Form_ Load()
'生成棋盘状态,用数组a(1)~a(16)表示,代码略
For i=1 To 16
s=s+Str(a(i))
If i Mod 4=0 Then List1. AddItem s : s=" "
Next i
End Sub