![小学生C++创意编程(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/24/52842024/b_52842024.jpg)
第6课 睡不着就数羊(计数)
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P54_4551.jpg?sign=1739416244-JKTnlZlNq20c6ujkx1Jnqg9wlMwoJLms-0-d061e7bdc5ccc4773d6b061f4b411d27)
睡不着的时候总喜欢数羊,一只羊、两只羊、三只羊……十只羊……一百只羊……一千只羊……一万只羊,后面开始跳着数量级数,十万只羊,一百万只羊……一亿只羊……亿后面的是什么数量级来着?
一查阅原来是“兆”,此时公鸡打鸣,天亮了。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P54_28703.jpg?sign=1739416244-FGfiqQqhpgjJtqrVF15TqtvFsbNXZQQE-0-ab0d7e84c743b57c0acc5d74f9f671d9)
数羊程序
数羊的过程,就是不断做加1运算的过程。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P54_28704.jpg?sign=1739416244-53IHWrEj8DeaRZAhUrF0gw2YFDoOE5n5-0-9ac90b3c00d7efbb5b28aee83cbd650f)
运行程序:
1只羊 2只羊 3只羊 …
(1)int count=0:声明整型变量count,并给它赋初始值0,我们数羊从0开始。
(2)count = count + 1:针对这句代码,需要细细拆解,这里的两个count有点不同。
● 首先程序按照顺序执行int count=0,此时count的值为0。
● 然后程序执行count = count + 1,先执行右边count + 1,这个时候count的值为0,那么0+1结果是1。
● 最后程序执行count = count + 1的赋值部分count =1,这个时候count的值为1。
敲黑板
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P55_28712.jpg?sign=1739416244-bLIYWPnn8EEE8FmNjklIniwEgPLztMrN-0-79d8bee6d78a0cc5548bfb89546c299a)
(3)将4句赋值运算代码整体分析一番,注意观察变量值对应的变化。
count = count + 1
count每次计算+1后,又赋值给了自己,所以count不断地增加1。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P56_28715.jpg?sign=1739416244-icv0yGJvYIwzfF7pXTAEW78pPnuzENfN-0-b96b283a81ebf2de2bf3154430c91276)
(4)cout << count << "只羊" << endl:可以将要输出的内容通过<<连接起来,还不用担心不同的数据类型呢。
计数器
嵌套上while (true) { },通过Sleep(1000)和system("cls")函数实现计数器。每一秒跳一个数字。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P56_28717.jpg?sign=1739416244-uWOIjgWeViHb7m0w5a84cRpFwilO4DoB-0-71daea73db516d53b4c67cdbf14e881a)
划重点
int i = 0需要放在循环的外面,否则每次循环都会将0赋值给i,这样输出就全是0了。
自增的变形
i = i + 1还可以写成i++。自增有两种写法:++可以写在变量i的后面,例如i++;也可以写在变量i的前面,例如++i。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P57_28724.jpg?sign=1739416244-InaHzu1fkX73DSbU4i0J8ooZeG8kdmro-0-f0e27d3be651a0d14496a5a2c3bcf9d5)
提出思考
如何探寻i++和++i的区别呢?
在程序中分别运用这两种方式,观察程序的运行结果。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P57_28726.jpg?sign=1739416244-qz9F3HQIhYS756vCwKUC59tOcNHdYREG-0-5a55716965e5edd951e0c606947ad969)
输出结果:
1 1
输出的都1,似乎没有什么区别呢。无论是i++还是++j,i和j都实现了自增1。
想要探寻其中的不同,需要换种方式。结合之前说到的计算和赋值先后的问题,进行一番设计。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P58_28729.jpg?sign=1739416244-Ivr1xp2F4bvId4w6zpzgfc9JWP2HVYXj-0-a51ad1e6587c4808f89f53fece4c930e)
奇怪的事情发生了,运行结果竟然是:
i:1 n:0 j:1 m:1
i、j、m都加1了,n竟然没有加1,这是为什么呢?接下来要敲黑板了!
敲黑板
i++和++i的区别:
i++
i = 0;
n = i++;
运行结果是:
i:1 n:0
说明i进行了自增,但是n并没有得到i自增后的结果。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P59_28739.jpg?sign=1739416244-hSUAo6MQAZfQJAirNGzFtxATP31YD33y-0-526fa1c97692f76bc948b36e1ee2d855)
++i
j = 0;
m = ++j;
运行结果是:
j:1 m:1
说明j进行了自增,自增后将值赋给了m。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P59_28740.jpg?sign=1739416244-LADeEiZ2n5LaVqG5Ccz9IeVpgjlFU0bK-0-4436bf008b0b692a366a3ff59a880f93)
++在变量前,就先自增再赋值:
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P59_28741.jpg?sign=1739416244-zETUFUH8XKyBBqRlIndsSOpvQFzUlY5Z-0-dae9a0c348466d21e59cd7445cef77f4)
++在变量后,就先赋值再自增:
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P59_28742.jpg?sign=1739416244-7bHyRf8NRz7A8csB1vWLbX8j3FJTxVwo-0-9b5d080b028df611507580eaebd356c8)
三二一倒计时
探索学习i--和--i。采用i++和++i的学习方法,进行对比学习,将+换成-,换汤不换药。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P59_28743.jpg?sign=1739416244-ZYG8G6jxHD1Bz24l56eGaXQLFgApPIYV-0-95721d28d7e4606ef446a00ecb4f64ea)
巩固练习
(1)n = 10; m = n--; m = --n;最终输出的m值是多少?( )
A.10
B.9
C.8
D.7
(2)i = 10; n = i++;和j = 11; m = --j;,最终n和m的值相等。( )√( )×
(3)下面的程序一共输出了4次num,写出每次输出时的num值。
![](https://epubservercos.yuewen.com/1C2139/31397789403525706/epubprivate/OEBPS/Images/Figure-P60_28758.jpg?sign=1739416244-fEF42gy6QpVrHRpX1V1jq29mgHKIg38o-0-b554b18e7299daf1f4b22fac22821497)
①num:__________________________________________________________________
②num:___________________________________________________________________
③num:____________________________________________________________________
④num:___________________________________________________________________
(4)编写一个循环程序,数字从0开始,按从小到大的顺序,每隔一秒输出一个偶数。