3步可以实现(中午没事刚写出来):Private Sub Command1_Click() Dim x(1 To 12) As String, temp As Integer, i As Integer For i = 1 To 12 x(i) = 2 Next Randomize temp = (Int(Rnd * 12 + 1)) x(temp) = 2 + (-1) ^ Int(Rnd * 2) ' define a light ball getit x End Sub Sub getit(ByRef x() As String)Dim a(1 To 12) As Double, i As Long, heavy As Boolean, diff As Integer For i = 1 To 12 a(i) = CDbl(x(i)) Next If a(1) + a(2) + a(3) + a(4) = a(5) + a(6) + a(7) + a(8) Then ' step 1 If a(9) + a(10) = a(11) + a(1) Then ' step 2 diff = 12 If a(1) > a(12) Then 'step 3 heavy = False Else heavy = True End If End If If a(9) + a(10) > a(11) + a(1) Then ' step 2 If a(9) = a(10) Then 'step 3 diff = 11 heavy = False ElseIf a(9) > a(10) Then 'step 3 diff = 9 heavy = True ElseIf a(9) < a(10) Then 'step 3 diff = 10 heavy = True End If End If If a(9) + a(10) < a(11) + a(1) Then 'step 2 If a(9) = a(10) Then 'step 3 diff = 11 heavy = True ElseIf a(9) > a(10) Then 'step 3 diff = 10 heavy = False ElseIf a(9) < a(10) Then 'step 3 diff = 9 heavy = False End If End If End If
If a(1) + a(2) + a(3) + a(4) > a(5) + a(6) + a(7) + a(8) Then 'step 1 If a(1) + a(6) + a(7) + a(8) = a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(2) = a(3) Then diff = 4 'step 3 If a(2) < a(3) Then diff = 3 'step 3 If a(2) > a(3) Then diff = 2 'step 3 heavy = True End If
If a(1) + a(6) + a(7) + a(8) > a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(1) = a(2) Then 'step 3 diff = 5 heavy = False End If If a(1) > a(2) Then 'step 3 diff = 1 heavy = True End If End If
If a(1) + a(6) + a(7) + a(8) < a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(6) = a(7) Then 'step 3 diff = 8 End If If a(6) > a(7) Then 'step 3 diff = 7 End If If a(6) < a(7) Then 'step 3 diff = 6 End If heavy = False End If End If
If a(1) + a(2) + a(3) + a(4) < a(5) + a(6) + a(7) + a(8) Then 'step 1
If a(1) + a(6) + a(7) + a(8) = a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(2) = a(3) Then 'step 3 diff = 4 End If If a(2) < a(3) Then 'step 3 diff = 2 End If If a(2) > a(3) Then 'step 3 diff = 3 End If heavy = False End If
If a(1) + a(6) + a(7) + a(8) > a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(6) = a(7) Then diff = 8 'step 3 If a(6) > a(7) Then diff = 6 'step 3 If a(6) < a(7) Then diff = 7 'step 3 heavy = True End If
If a(1) + a(6) + a(7) + a(8) < a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(1) = a(2) Then 'step 3 diff = 5 heavy = True End If If a(1) < a(2) Then 'step 3 diff = 1 heavy = False End If End If End If MsgBox "若12个球重量为:" & Join(x, ",") & vbCrLf & vbCrLf & "则第 " & diff & "个球偏" & IIf(heavy = True, "重!", "轻!"), 64, "结果" End Sub
Dim x(1 To 12) As String, temp As Integer, i As Integer
For i = 1 To 12
x(i) = 2
Next
Randomize
temp = (Int(Rnd * 12 + 1))
x(temp) = 2 + (-1) ^ Int(Rnd * 2) ' define a light ball
getit x
End Sub
Sub getit(ByRef x() As String)Dim a(1 To 12) As Double, i As Long, heavy As Boolean, diff As Integer
For i = 1 To 12
a(i) = CDbl(x(i))
Next
If a(1) + a(2) + a(3) + a(4) = a(5) + a(6) + a(7) + a(8) Then ' step 1
If a(9) + a(10) = a(11) + a(1) Then ' step 2
diff = 12
If a(1) > a(12) Then 'step 3
heavy = False
Else
heavy = True
End If
End If
If a(9) + a(10) > a(11) + a(1) Then ' step 2
If a(9) = a(10) Then 'step 3
diff = 11
heavy = False
ElseIf a(9) > a(10) Then 'step 3
diff = 9
heavy = True
ElseIf a(9) < a(10) Then 'step 3
diff = 10
heavy = True
End If
End If
If a(9) + a(10) < a(11) + a(1) Then 'step 2
If a(9) = a(10) Then 'step 3
diff = 11
heavy = True
ElseIf a(9) > a(10) Then 'step 3
diff = 10
heavy = False
ElseIf a(9) < a(10) Then 'step 3
diff = 9
heavy = False
End If
End If
End If
If a(1) + a(2) + a(3) + a(4) > a(5) + a(6) + a(7) + a(8) Then 'step 1
If a(1) + a(6) + a(7) + a(8) = a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(2) = a(3) Then diff = 4 'step 3
If a(2) < a(3) Then diff = 3 'step 3
If a(2) > a(3) Then diff = 2 'step 3
heavy = True
End If
If a(1) + a(6) + a(7) + a(8) > a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(1) = a(2) Then 'step 3
diff = 5
heavy = False
End If
If a(1) > a(2) Then 'step 3
diff = 1
heavy = True
End If
End If
If a(1) + a(6) + a(7) + a(8) < a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(6) = a(7) Then 'step 3
diff = 8
End If
If a(6) > a(7) Then 'step 3
diff = 7
End If
If a(6) < a(7) Then 'step 3
diff = 6
End If
heavy = False
End If
End If
If a(1) + a(2) + a(3) + a(4) < a(5) + a(6) + a(7) + a(8) Then 'step 1
If a(1) + a(6) + a(7) + a(8) = a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(2) = a(3) Then 'step 3
diff = 4
End If
If a(2) < a(3) Then 'step 3
diff = 2
End If
If a(2) > a(3) Then 'step 3
diff = 3
End If
heavy = False
End If
If a(1) + a(6) + a(7) + a(8) > a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(6) = a(7) Then diff = 8 'step 3
If a(6) > a(7) Then diff = 6 'step 3
If a(6) < a(7) Then diff = 7 'step 3
heavy = True
End If
If a(1) + a(6) + a(7) + a(8) < a(5) + a(9) + a(10) + a(11) Then 'step 2
If a(1) = a(2) Then 'step 3
diff = 5
heavy = True
End If
If a(1) < a(2) Then 'step 3
diff = 1
heavy = False
End If
End If
End If
MsgBox "若12个球重量为:" & Join(x, ",") & vbCrLf & vbCrLf & "则第 " & diff & "个球偏" & IIf(heavy = True, "重!", "轻!"), 64, "结果"
End Sub
UP!