。
注意:⑴其中A+B=C 等式中的“+”“=”需要用去4根火柴。
⑵0+4=4与4+0=4算作一种方案。
例如n=18,符合条件的算式共有5个:0+4=4,0+11=11,1+10=11,2+2=4,2+7=9。
小明设计了一个程序,在Text1中输入火柴数量,单击“计算”按钮,在Label1中输出总的可行方案数,并在List1中输出所有可行的算式。
程序代码如下,加框处代码有误,请修改。
Dim s(0 To 9) As Integer
Private Sub Command1_Click()
Dim n As Integer, a As Integer, b As Integer, count As Integer
count=0
n=Val(Text1.Text)
For a=0 To 999 Step 1
For b=a To 999 Step 1
If Then '①
List1.AddItem Str(a)+"+"+Str(b)+"="+Str(a+b)
count=count+1
End If
Next b
Next a
Label2.Caption="共"+Str(count)+"种方案"
End Sub
Function gs(ByVal x As Integer) As Integer
Dim tmp As Integer
tmp=0
If x=0 Then tmp=s(0)
Do While x > 0
'②
x=x \ 10
Loop
gs=tmp
End Function
Private Sub Form_Load()
s(0)=6: s(1)=2: s(2)=5: s(3)=5: s(4)=4
s(5)=5: s(6)=6: s(7)=3: s(8)=7: s(9)=6
End Sub
图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
实现上述功能的VB代码如下。
Dim a(1 To 50) As Integer
Private sub Command1_Click()
Dim i As Integer
k=0: i=3
Do While i<= 100
If Not prime(i) Then
k=k+1
End If
i=i+2
Loop
For i=2 To k
If Then
List1 AddItem Str(a(i-1))+"和"+ Str(a(i))
End if
Next i
End Sub
Function prime (x As Integer)As Boolean
prime=False
For i=2 To Int(sar(x))
If x Mod i=0 Then
prime=True
Exit for
End If
Next i
End Function
输入两个互不相等的正整数A和B 10:If A<B then C←A,A←B,B←C) 输出A和B Else 返回到标号10的行继续执行 |
下列有关上述算的法说法,正确的是( )
Private Sub Command2_Click()
Const n=12
Dim a(1 To n) As Integer, s As Integer
Dim i As Integer, j As Integer
Randomize
For i=1 To n
a(i)=Int(Rnd * 50)+1
For j=1 To i- 1
If a(i)=a(j) Then
Next j
If j <i Then
Next i
For i=1 To n
For j=1 To n
If Then
s=s+1
List1. AddItem Str(s)+":"+ Str(a(i)) + Str(a(j))
Exit For跳出内层循环
End If
Next j
Next i
End Sub