实践七国际象棋棋盘上的麦粒

别妄想泡我
517次浏览
2021年01月06日 13:59
最佳经验
本文由作者推荐

陈旭的歌-又

2021年1月6日发(作者:裘云锦)


实践七 国际象棋棋盘上的麦粒

1、实践目标
(1)理解循环语句的作用,能根据实际情况正确使用For语句与Do
语句。
(2)学会使用VB循环控制结构编写程序,实现简单的算法。
2、任务描述
在印度有一个古老的传说:舍
罕王打算奖赏国际象棋的发明
人——宰相西萨·班·达依尔。
国王问他想要什么。他对国王
说:陛下,请您在这张棋盘
(图7-1)的第1个小格里,
赏给我1粒麦子,在第2个小
格里给2粒,第3小格给4粒,
以后每一小格都比前一小格加
1倍。请您像这样摆满棋盘上所有64格的麦粒,都赏给您的仆 人吧!国
王觉得这个要求太容易满足了就命令给他这些麦粒。当人们把一袋一袋的
麦子搬来开始 计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿
来,也满足不了那位宰相的要求。
那么,宰相要求得到的麦粒到底有多少呢?尝试设计一个程序来计
算。
3、操作提示
(1)问题分析
本问题可用累加的方法来求解,即最后得到的麦粒数由每一格赏赐的
麦粒数相加得到,而且相邻的格子要求得到赏赐的麦粒数也是有一定规律
的,即后一格是前一覆盖麦粒数 的2倍。若用1表示当前所处的格子,p
1


表示此格子中应该赏赐的麦粒数 ,s表示累加得到的麦粒数,分析过程见
表7-1。
表7-1
格(i)
1
2
3
4
5
6
……
64
每格存放麦粒数(p)
1
2
4
8
16
32
……

累加和(s)
1
1+2
1+2+4
1+2+4+8
1+2+4+8+16
1+2+4+8+16+32
……

由表7-1的分析可得i= ,p= ,s= 。
(2)设计算法。
根据上面的分析,可画出算法流程图如下:
2




















(3)程序实现。
开始
输入棋盘上的格子数n
累加得到的麦粒数置初值s←0
累加得到的麦粒数置初值s←0
置初值:i←1
I≤n?
N
s←s+p
Y
输出麦粒数s
结束
p←p*2
i←i+11
①将下列根据上面算法编写的代码填写完整。
Private Sub Command1 Click( )
Dim n As Integer, i As Integer, p As Double, s As Double
n=Val()
s=0
p=1
For i= Ton
s=
3


p=
Next 1
=Str(s)
End Sub
②新建工程,创建窗体。界面设计参照图7-2,属性设置参照表7-2。








表7-2 窗体中主要控件属性设置
对象
Form1
Label1
Label2
Text1
Text2
Command1
属性名称
Caption
Caption
Caption
Text
Back Color
Text
Back Color
Caption
属性值
国际象棋棋盘上的麦粒
请输入当前所处的棋盘格数(n=)
赏赐的麦粒总数(s=)
(空白)
&H00FFC0C0&(蓝色)
(空白)
&H00FFC0C0&(蓝色)
计算
③将上面完成的代码段输入到计算按钮的代码窗口中。
④调试运行程序。
[扩展与提高]
(4)请将以下用Do语句编写的程序填写完整,并注意对比两种循
环语句的使用。
Private Sub Command1 Click( )
Dim n As Integer, i As Interger, p As Double, s As Double
4


n=Val(Text1. Text)
s=0
p=1

Do While i<=n
s=
p=
i=
Loop
=Str(s)
End Sub
(5)假如每颗麦粒的重量为0.2克,每人每天 消耗0.5千克,算一算
上面棋盘上的麦粒能供全球60亿人吃多少年?(先写出VB表达式再计
算)
5

轻骑飞跃-考拉小巫的英语学习日记


甄嬛传经典台词-qq个性签名情侣


大连艺术学院分数线-军训的作文


你的歌声里-守株待兔教学反思


四川泡菜的腌制方法-会说话的狗


制造业采购-高考作文2016


露营必备-行政法论文


盐的妙用-校园的早晨歌词