内容正文:
第9课 for循环的应用实例
情景导入
01 问题分析
02 算法设计
03 编写代码
04 调试运行
程序
问题分析
一、问题分析
该问题可以用累加的方法求解,相邻格子的麦粒数有一定规律,即后一格的麦粒数是前一格的2倍。
一、问题分析
格子的序号(i) 当前格子存放的麦粒数(p) 累加和(s)
1 1 1
2 1*2 1+2
3 2*2 1+2+4
4 2*2*2 1+2+4+8
…… …… ……
64 2*2*2...*2 1+2+4+8…
若用变量i表示当前所处格子的序号,变量p表示此格子中存放的麦粒数,变量s表示累加得到的麦粒数。那么分析过程如表所示:
计数器:在算法执行过程中,用来记录某种事件发生次数的变量。
1、计数器的初值通常置为0。
2、循环体中的计数语句格式通常为i = i + 1。
累加器:在算法执行过程中,用来生成并储存数据累加和的变量。
1、累加器的初值通常置为0。
2、循环体中的累加语句格式通常为s = s + x。
累乘器:在算法执行过程中,用来生成并储存数据累乘积的变量。
1、累乘器的初值通常置为1。
2、循环体中的累加语句格式通常为p = p * j。
一、问题分析
格子的序号(i) 当前格子存放的麦粒数(p) 累加和(s)
1 1 1
2 1*2 1+2
3 2*2 1+2+4
4 2*2*2 1+2+4+8
…… …… ……
64 2*2*2...*2 1+2+4+8…
计数器i,
循环次数
累乘器p,
每格麦粒数
p=p*2
累加器s,
麦粒总数
s=s+p
若用变量i表示当前所处格子的序号,变量p表示此格子中存放的麦粒数,变量s表示累加得到的麦粒数。那么分析过程如表所示:
算法设计
二、算法设计
根据以上分析,输入数据为棋盘的格子数n,输出数据为麦粒的总粒数s。中间处理数据为计数器和每个格子的麦粒数,不用输出。
该算法用自然语言描述如下:
输入:棋盘的格子数n。
处理:每个格子的麦粒数p。
输出:麦粒的总数s。
该算法的流程图如右图所示:
编写程序
三、编写程序
三、编写程序
调试运行
四、调试运行
为了更好呈现麦粒重量和计算过程,可以将麦粒数转化为吨位(按每粒麦子约0.03克计算),并在循环过程中输出每个格子的麦粒数P。其程序代