
第7课 星号金字塔(双变量累加)

有这样一座星号金字塔,每一层都由奇数个星号组成。第一层1个,第二层3个,第三层5个,以此类推。

现在我们需要计算出这个星号金字塔一共有多少个星号,试着编写程序来完成吧!
温故知新
列等式计算。

(1)"1+3+5+7+9=":这是字符串,列了一个字符串等式。
(2)1+3+5+7+9:这是进行5个数字的加法运算。
(3)多个<<将内容拼接输出。

累加求和
挑战一个有难度的计算,如果星号一共有100层,那么一共有多少个星号?将数字一个一个地写出来就太烦琐了,需要找到简便的方法。
之前计数的时候是每次加1,现在的求和是+1、+3、+5、+7、+9…每次加的数字都不同。

(1)sum = 0:声明了一个变量sum,用它来存储星号的总数,计算前初始值是0。
(2)将每层的星号数量加起来:

划重点
观察sum的变化,每行代码执行后,sum值都发生了变化。

双变量
把后面加的数字1、3、5、7、9换成变量i的话,sum = sum + i的意思就是把原来sum的值加上i的值,再赋值给sum得到一个新的值。如果sum从0开始,就相当于把所有的i都加起来了,sum就是所有i的总和。
再感受一番累加,从0开始+1、+3、+5、+7、+9。
sum = 0 sum = sum + 1; 0 + 1 = 1 (完成加1) sum = sum + 3; 1 + 3 = 4(计算的结果继续加3) sum = sum + 5; 4 + 5 = 9(计算的结果继续加5) sum = sum + 7; 9 + 7 = 16(计算的结果继续加7) sum = sum + 9; 16 + 9 = 25(计算的结果继续加9)
星号的数量统计,不仅sum有规律,后面增加的数字也有规律,它们都是依次增加的奇数。尝试将后面的加数也用一个变量来替代。

每次累加后,i都增加2,将i = i + 2写入程序。


巩固练习
(1)以下哪个式子的计算结果和程序输出结果相等?( )

A.0 + 1 + 3 + 6 + 9 =
B.0 + 4 + 10 + 19 =
C.0 + 1 + 4 + 10 + 19 =
D.0 + 1 + 4 + 10 =
(2)星号塔每层都有偶数个星号,第一层2个,第二层4个,第三个6个,第四层8个,第五层10个。同样使用之前的程序代码计算总星号数,但是程序有些小问题,需要你来修改一下。

(3)运用双变量累加的方式,求1+2+3+4+5+6+7+8+9+10的运算结果。
探索思考
100层星塔中星号的总数还没有计算出来,留给你探索一番。这里需要用到循环,试着运用我们之前学习的while (true) { }来完成吧!
