课程首页 › 第2部分 › 第30课

第30课 3、7过游戏

第2部分 智能的开始 · 选择结构· 知识点:条件分支

3、7过游戏(条件分支)

数字精灵们在等餐的时候,特别喜欢玩一个烧脑游戏—3、7过。那什么是“3、7过”呢?由第一位同学说出第一个数字,然后大家顺次接着报数,报出自己位置的数字,当遇到的数字是3或7的倍数或者数字尾数是3或7的时候就说“过”。

例如:从5开始报数,5、6、过(7)、8、过(9)、10、11、过(12)、过(13)、过(14)、过(15)、16、过(17)……

7:遇到7的尾数,不说7而说“过”。

9:遇到3的倍数,不说9而说“过”。

12:遇到3的倍数,不说12而说“过”。

13:遇到3的尾数,不说13而说“过”。

14:遇到7的倍数,不说14而说“过”。

15:遇到3的倍数,不说15而说“过”。

17:遇到7的尾数,不说17而说“过”。

请问:接下来的18是说“18”还是说“过”呢?

插图

如果有个程序能帮我玩这个游戏那该多好呀!

3、7过

插图

运行程序:

输入数字:1

输入数字:2

输入数字:3

过

输入数字:4

输入数字:5

输入数字:6

过

输入数字:7

过

输入数字:8

输入数字:9

过

输入数字:

(1)什么时候说“过”,是程序设计的关键。

有4个条件,只需满足其中一个即可,可以使用||(逻辑或)将条件相连。

①数字尾数为3→尾数就是个位数,取出个位数与3比较。

②数字尾数为7→尾数就是个位数,取出个位数与7比较。

③数字是3的倍数→3的倍数就是除以3的余数为0的数。

④数字是7的倍数→7的倍数就是除以7的余数为0的数。

数字尾数为3||数字尾数为7||数字是3的倍数||数字是7的倍数

num%10==3||num%10==7||num%3==0||num%7==0

4个条件满足其一,即为真(true)

(2)编写代码:

插图

条件为true则输出“过”,否则输出数字本身。

提出思考

如何实现上述游戏中的数字自动顺次出现呢?

想一想,如果循环里的num每次都自增1,是不是就可以了呢。

插图

运行程序:

输入起始数字:1

1→1

2→2

3→过

4→4

5→5

6→过

7→过

8→8

9→过

10→10

11→11

12→过

13→过

14→过

15→过

16→16

(1)#include:windows.h文件包含了许多用于操作Windows操作系统的指令和信息,将它包含进来是为了使用Sleep()函数。

(2)Sleep(500):通过Sleep()函数将数字的输出间隔一定时间。

(3)num++:每循环一次,num增加1,实现数字自动顺次出现。

敲黑板

插图

当num为1时:

第一次进入循环,输出num→1,然后num自增1,此时num变成了2。

第二次进入循环,输出num→2,然后num自增1,此时num变成了3。

每次循环num增加1,下一次循环num比上一次num多1。

插图

巩固练习

(1)以下哪个if语句中的“真”一定会输出?()

A.

if(x==5){
cout<<"真";}

B.

if(x>0 && x<10){
cout<<"真";}

C.

if(true){
cout<<"真";}

D.

if(x !=5){
cout<<"真";}

(2)在一个while(true)循环中,如果没有适当的退出条件,会发生什么?()

A.编译错误

B.程序会崩溃

C.程序会一直运行,无法终止

D.程序会输出错误消息

(3)请编写一个C++程序,使用while(true)循环不断让用户输入字母,如果是大写字母就输出“我改成了小写”+小写字母;如果是小写字母就输出“我改成了大写”+大写字母;如果是其他字符就输出“输入有误!”;如果是数字0则直接退出程序,输出“字母转换结束!”

示例:

请输入一个字母(输入0退出): R

我改成了小写r请输入一个字母(输入0退出): d我改成了大写D

请输入一个字母(输入0退出): 9

输入有误!

请输入一个字母(输入0退出): 0

字母转换结束!

第3部分 不辞辛苦 —— 循环结构

第三部分

不辞辛苦

——循环结构