![小学生C++创意编程(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/24/52842024/b_52842024.jpg)
第7课 星号金字塔(双变量累加)
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P62_4962.jpg?sign=1739416046-SBI2yR5x4SXaq2oAhEM8MhTFcuRjW9We-0-dc149c990c4d1b3d5f304a24d254d223)
有这样一座星号金字塔,每一层都由奇数个星号组成。第一层1个,第二层3个,第三层5个,以此类推。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P62_28763.jpg?sign=1739416046-cavPuqx2Kn6rgJH8V8Eo0FBcAp3JXkP3-0-710a8c73d2efd36a76967856d1bca6e1)
现在我们需要计算出这个星号金字塔一共有多少个星号,试着编写程序来完成吧!
温故知新
列等式计算。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P62_28765.jpg?sign=1739416046-rXjblQ3z0oWfLPrCeSyAEcsbJgDnFm39-0-11d9cb7cbd29312175c225e81be545ee)
(1)"1+3+5+7+9=":这是字符串,列了一个字符串等式。
(2)1+3+5+7+9:这是进行5个数字的加法运算。
(3)多个<<将内容拼接输出。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P63_28767.jpg?sign=1739416046-tjCXGGliMMNNZxuer0RmaT61zRPmx5xv-0-2ac55acd4c464c244ae3bc56cfc9ff66)
累加求和
挑战一个有难度的计算,如果星号一共有100层,那么一共有多少个星号?将数字一个一个地写出来就太烦琐了,需要找到简便的方法。
之前计数的时候是每次加1,现在的求和是+1、+3、+5、+7、+9…每次加的数字都不同。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P63_28768.jpg?sign=1739416046-ruETmnn3Og7nKA6sYuB3UCPRjXqI5EWN-0-036496434379e03ca80fd2fdcc67786d)
(1)sum = 0:声明了一个变量sum,用它来存储星号的总数,计算前初始值是0。
(2)将每层的星号数量加起来:
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P64_28769.jpg?sign=1739416046-NxwfSSi3lqNE7mA8aKmmAVdL0Hq6fV0V-0-35f665f34901832175b1de075559d98c)
划重点
观察sum的变化,每行代码执行后,sum值都发生了变化。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P64_28771.jpg?sign=1739416046-zHwMJKKvmbwREu2XczOTokzOVp2JvCoA-0-c70826fa129aa9b83eb9e7cfd2ac5a5d)
双变量
把后面加的数字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有规律,后面增加的数字也有规律,它们都是依次增加的奇数。尝试将后面的加数也用一个变量来替代。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P65_28776.jpg?sign=1739416046-IDjgAeaKXvpq2i7hJqTX5UT7QU1CsMZW-0-f97dd4b07c4aa2b6e55584bc9f8b1da0)
每次累加后,i都增加2,将i = i + 2写入程序。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P65_28777.jpg?sign=1739416046-MRJf2zGKwHJqNTYA18DKDeFHjHpB8vRP-0-b1e338ac2dbc60a6fe91e62dfbd1fdd3)
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P66_28778.jpg?sign=1739416046-HbNoe4xYXxE7JBU2FmmDTurpcTCv9yW9-0-a298b2a00788438a1b40d18048a4d84e)
巩固练习
(1)以下哪个式子的计算结果和程序输出结果相等?( )
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P66_28780.jpg?sign=1739416046-ELmKKNL88apmPZOeGBfYPiOv5X2wJcW8-0-7096bd2a969861775678c4b5bed123c6)
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个。同样使用之前的程序代码计算总星号数,但是程序有些小问题,需要你来修改一下。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P67_28782.jpg?sign=1739416046-VsOuGsQwj0Mafy4AdAXzddpT3nz7Xxqd-0-f38a16dc7c712741113c79010e339802)
(3)运用双变量累加的方式,求1+2+3+4+5+6+7+8+9+10的运算结果。
探索思考
100层星塔中星号的总数还没有计算出来,留给你探索一番。这里需要用到循环,试着运用我们之前学习的while (true) { }来完成吧!
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P67_28784.jpg?sign=1739416046-B7KRYQhXrx6Tt4MRlaIZ8b1yrio7SRXl-0-51f73b36813c43ff3f6f242d47d2d9aa)