求助高手~!!VB do while 国际象棋棋盘上的麦粒程序!!

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:54:40
国际象棋盘上的麦粒
在印度有一个古老的传说:舍汗王打算奖赏国际象棋的发明人——宰相西萨班达依尔。国王问他想要什么。他对国王说:“陛下,请您在这张棋盘(见图1)的第1个格子,赏给我1粒麦子,在第2个小格子里给2粒,第3小格里给4粒,以后每一小格都比前一小格多1倍。请您将这样摆满棋盘上所有64格的麦粒,都赏给您的仆人吧!”国王觉得这个要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋麦子搬来开始数时,国王才发现:就是把全印度甚至全世界的麦粒都拿来,也满足不了那位宰相的要求。
那么,宰相要求得到的麦粒到底有多少呢?
方法一:
Private Sub Command1_Click()
Dim n As Integer, I As Integer, p As double, s as double
N=64
S=0
P=1
For i=_________ to n
S=______________
P=______________
Next i
Label1.Caption=”麦粒的数量是”+ str(s)
End Sub

方法二:
Private Sub Command1_Click()
Dim n As Integer, I As Integer, p As double, s as double
N=64
S=0
P=1
________
Do while i<n
S=______________
P=______________
I=_____________
loop
Label1.Caption=”麦粒的数量是”+ str(s)
End Sub

问题:假如每粒麦子的重量是0.2克,每人每天消耗0.5千克,那么棋盘上的麦粒能供全球60亿人吃多少年?

For I = 1 To n
s = s + p
p = 2 ^ I
Next I

I = 1
Do While I <= n '这里应该是小于等于N 不是小于N
s = s + p
p = 2 ^ I
I = I + 1
Loop

吃多少年的问题: s * 0.2 / (500 * 6000000000# * 365)
结果为 3369.27年

For I = 1 To n
s = s + p
p = 2 ^ I
Next I

I = 1
Do While I <= n '这里应该是小于等于N 不是小于N
s = s + p
p = 2 ^ I
I = I + 1
Loop

s * 0.2 / (500 * 6000000000# * 365)
结果为 3369.27年