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
输入火柴棍的数量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
① ② ③
153=1×1×1+5×5×5+3×3×3
小张设计了一个算法来输出所有的水仙花数,具体程序如下。
密码强度判断条件如下:密码长度小于6,则强度为“弱”。在密码长度大于等于 6 的情况下,若只出现一种字符,则密码强度为“弱”;若出现两种不同字符,则密码强度为“中”,出现3种以上不同字符,则密码强度为“强”。
Private Sub Cmd1_Click()
Dim n As Integer, i As Integer, m As Integer, s As String, c As String
If n < 6 Then
Label3.Caption = "弱"
Else
s = "0000"
For i = 1 To n
c = Mid(Text1.Text, i, 1)
If c >= "0" And c <= "9" Then
Mid(s, 4, 1) = "1" '将字符串 s 第 4 位上的字符替换为"1"
ElseIf c >= "A" And c <= "Z" Then
Mid(s, 3, 1) = "1"
ElseIf c >= "a" And c <= "z" Then
Else
Mid(s, 1, 1) = "1"
End If
Next i
m = 0
For i = 1 To 4
If Mid(s, i, 1) = "1" Then
Next i
If m < 2 Then
Label3.Caption = "弱"
ElseIf m = 2 Then
Label3.Caption = "中"
Else
Label3.Caption = "强"
End If
End If
End Sub
n=Len(s) 's是待判断的字符串
k=0:j=n
For i=1 to n/2
Next i
If k=0 Then Label1.Caption="对称" Else Label1.Caption="不对称"
方框中的代码由以下三部分组成:
①j=j-1
②If c1 <> c2 Then k = k+1
③c1=Mid(s,i,1) : c2=Mid(s,j,1)
代码顺序正确的选项是( )
Dim a(1 to 5) as Integer, i as Integer, c as Integer
a(1) = 2 : a(2) = 1 : a(3) = 3 : a(4) = 4 : a(5) = 5
c = 0
For I = 3 to 5
If a(i - 2) + a(i - 1) = a(i) Then c = c + 1
Next i
Text1.Text = Str(c)
该程序运行后,文本框text1中显示的内容是( )
例如:n = 5,a(1)= 4,a(2)= 7 ,a(3)= 8,a(4)= 6,a(5)= 4。
最佳方案为初始时所有人聚集在2号房间花费的最小能量为7*0+8*1+6*2+4*3+4*4=48。
实现上述功能的 VB 代码如下,但加框处代码有错,请改正。
Dim a( 1 To 100) As Integer '依次存储编号为 1 到 100 的房间的最多居住人数
Private Sub Form_Load()
'产生N的值
'本过程从数据库中依次读取编号为1到 N的房间的最多居住人数,并存储在数组a中
'代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, w As Integer
Dim t As Long, ans As Long
ans = 32767
For i=1 To n
t = 0
For j=0 To n-1
‘(1)
If w=0 Then w=n
‘(2)
Next j
If t < ans Then ans = t
Next i
Text2.Text = Str(ans)
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:
⑴;⑵。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, d As Integer, r As integer
Dim rs As string, ans1 As Integer, ans2 As Integer
For i=81 To 342
①
rs=“”
Do While d <>0
r = d Mod 9
rs= str(r)+rs
②
Loop
ans1= Val(rs)
‘求出相应的七进制数,存储在变量ans2中,代码略
If ans1 Mod 10=ans2\ 100 And ans1\ 100=ans2 Mod 10 And ③ Then
Text1. Text=④
Text2 Text= Str(ans1)
Text3. Text= Str(ans2)
End If
Next i
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
图a为初始状态,操作圈中的灯,则该灯与对面的两盏灯都会切换“开/关”状态,如图b所示。假设这些灯的编号为0到6号,“开/关”状态随机产生,并输出到列表框List1中,接着需要从中选出数盏灯进行操作,使得最后所有灯都打开(已证明方案-一定存在且唯一), 并在列表框List2中输出灯的编号。
程序采用枚举策略,一一尝试对每盏灯状态进行“切换”操作,“1”表示对当前灯进行切换,“0”表示不操作。
程序运行界面如图c所示。
Dim a(0 To 6)As Integer,b(0 To 6) As Integer
Private Sub Command1_Click()
Dim i As Integer, x As Integer, pos As Integer
Dim flag As Boolean
List2.Clear
For i = 0 To
x = i:pos = 0:flag = True
For j = 0 To 6
b(j)= a(j)
Next j
Do While x > 0
If x Mod 2 = 1 Then
b(pos)= 1 - b(pos)
b((pos + 3) Mod 7) = 1 – b((pos + 3) Mod 7)
End If
pos = pos + 1
x = x \ 2
Loop
For j = 0 To 6
IfThen flag = False:Exit For
Next j
If flag Then
pos = 0
Do While i > 0
If i Mod 2 = 1 Then List2.AddItem “第” + CStr(pos)+ “号”
i = i \ 2
pos = pos + 1
Loop
Exit For
End If
Next i
End Sub
Private Sub Form_Load() ‘随机生成初始数据
Dim i As Integer
Randomize
List1.Clear
For i = 0 To 6
a(i)= Int(Rnd * 2)
If a(i)= 1 Then
List1.AddItem “第” + CStr(i) + “号:”+ “开”
Else
List1.AddItem “第” + CStr(i) + “号:” + “关”
End If
Next i
End Sub
请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Label3.Caption = ""
For i = 1 To 50
a(i) =
If i Mod 10 = 0 Then
Label3.Caption = Label3.Caption + CStr(a(i)) + vbCrLf '换行
Else
Label3.Caption = Label3.Caption + CStr(a(i)) + " "
End If
Next i
End Sub
Private Sub Command2_Click()
Label4.Caption = ""
n = 0
For i = 1 To 50
For k = 2 To a(i) - 1
If Then Exit For
Next k
If k = a(i) Then
n = n + 1
If n = 1 Then b(n) = a(i)
For j = 1 To n - 1
If b(j) = a(i) Then: Exit For
If j = n - 1 Then b(n) = a(i)
Next j
End If
Next i
For j = 1 To n
Label4.Caption = Label4.Caption + + " "
Next j
Private Sub Command1_Click()
Randomize '随机数初始化
Dim i As Long, n As Long, s As Long
Dim x As Double, y As Double, z As Double
n = Val(Text1.Text)
①
s = 0
Do While i <= n '随机投点n次
x = Rnd: y = Rnd
z = ②
If z <= 1 Then
s = s + 1
End If
i = i + 1
Loop
Text2.Text = ③
问题:实现上述功能的VB 代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim n as long , sum as long , i As Long Dim x as long , y as long
List1.Clear
n = Val(Text1.Text) sum = 0
For i = 10 To n
x = ‘①
y = 0
Do While x > 0
y = ‘②
x = x \ 10
Loop
If y = i Then
List1.additem Str(i)
sum = sum+1
End if
Next i
Label1.caption = “共有”& Str(sum) & “个回文数” End Sub
①②
Private Sub Command1_Click()
Dim i As Long, j As Long, k As long
Dim As long
For i=0 To 9
For j=0 To 9
For k=0 To 9
s=i*100+j*10+k
If(i^3)+(j^3)+(k^3)=s Then
Debug. Print s
End If
Next k
Next j
Next i
End Sub
a=1: b=1:c=1
do while a+b+c<=10
a=a+1
b=b*2
c=b/2
loop
用计算机对《红楼梦》进行词频统计的研究,用计算机模拟水稻高产栽培的模型,“神州飞船”发射指挥中心使用大量的计算机设备对飞船的指挥和控制等等,无不体现计算机的魅力和神秘莫测!计算机像人类的大脑一样充满智慧,像神仙一样神机妙算,这些都是归于计算机程序的功劳。
按上述要求,编写VB程序,功能如下:在文本框Text1中输入n的值,点击“开始枚举”按钮Command1,在列表框List1中输出所有方案,在列表框List2中输出比例合适方案。
实现上述功能的VB程序如下,回答下列问题:
Dim n As Integer, Getstr As String
Private Sub Command1_Click()
Dim i As Integer, j As Integer, mAs Integer
n = Val(Text1.Text)
Getstr = ""
For i = 0 To 2 ^ n -1
m = i
If Then
For j = 1 To n
If m Mod 2 = 0 Then
Getstr = "女" + Getstr
Else
Getstr = "男" + Getstr
End If
m = m \2
Next j
List1.AddItem Getstr
If Team(Getstr) <> "" Then List2.AddItem (Team(Getstr))
Getstr =""
End If
Next i
End Sub
Function search(i As Integer) As Boolean '判读男生是否相邻
Dim j As Integer,t As Integer
Dim a(1 To 15) As Integer
t = i
For j = 1 To n
a(j) = t Mod 2
t = t \2
Next j
flag = True
For k = 1 To n -1
If Then flag = False: Exit For
Next k
search = flag
End Function
Function Team(ch As String) As String '判读男女生比例是否合适
Dim num As Integer, st As Integer, i As Integer,c(0 To 1) As Integer
Team = “”
For i = 0 To 1
c(i) = 0
Next i
For i = 1 To n
st= Mid(ch, i, 1)
If st= "男" Then num=1: c(num)= c(num)+1 Else num =0: c(num)= c(num)+1
Next i
IfThen Team = ch
End Function