vb的百元买百鸡问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 07:16:25
请问我下面的百元买百鸡代码有没有错
'大鸡为3元,中鸡为1元,小鸡为1/3元
dim x,y,z,a
for x=1 to 100
for y=1 to 100
for z=1 to 100
if x+y+z=100 and 3*x+1*y+(1/3)*z=100 then
a=a&"3元鸡买"&x&"只"&" "&"1元鸡买"&y&"只"&" "&"1/3元鸡买"&z&"只"&vbcrlf
end if
next
next
next
msgbox(a)
是不是已经把所有结果都计算出来了,有没有更加简便的代码(请多多教)

多余问题: 为什么我的电脑cpu单核3.07G远行上面的程序还要等2秒左右才算得出来,电脑不是一秒中计算100多亿次.那干麻计算100万次就要等3秒时间

楼上的最优代码? 不见得吧,我写一个,比你的循环次数还少的:
Dim X,Y,A
For X=1 to 33
For Y=1 to 100-3*X
If 3*X+Y+(100-X-y)/3=100 Then
a = a & "3元鸡买" & x & "只" & " " & "1元鸡买" & y & "只" & " " & "1/3元鸡买" & (100 - x - y) & "只" & vbCrLf
End If
Next
Next
Print A

上面的代码循环1617次,楼上的,用了3300次

给你一个最优化的代码:
dim x,y,a
for x=1 to 33
for y=1 to 100
if 3*x+1*y+(100-x-y)/3=100 then
a=a&"3元鸡买"&x&"只"&" "&"1元鸡买"&y&"只"&" "&"1/3元鸡买"&(100-x-y)&"只"&vbcrlf
end if
next
next
msgbox(a)

Private Sub Form_click()
Dim x As Integer
Dim y As Integer
Dim z As Integer
For x = 1 To 33
For y = 1 To 100
For z = 1 To 100 - x - y
If x + y + z = 100 And 3 * x + 1 * y + (1 / 3) * z = 100 Then
Print x, y, z
End If