Scratch与数学的整合12
第12课 报数取胜
一、让我们开始吧
小朋友们,你们玩过报数吗?我们所有人玩的游戏,以及比赛,都有说:“××是第××名。”我们生活中也有这样的例子:对方问你:“你要多少个?报数。”这些看似不能再简单而又有趣的问题,学问可真不小呢!类似的还有一种题型叫对策问题。无论是报数还是对策,它们都有一个共同点:本质完全相同,都是谁胜谁负。
二、问题探究
1、小红和小绿交替报数,谁报奇数累计7个,谁就获胜。要小红先报,他会输还是会赢?
分析:我们知道,交替报数的规则是我报一个,你再报一个,接下来你再报一个,我再接下来又报一个……这样的规律进行的,而报第1个数必须从1报起,且1是奇数,奇数与偶数相邻,那么后面的2,3,4……就依次对应的奇偶性就是偶数,奇数,偶数……7×2=14,14能被2整除,是偶数,根据题意,要小红先报,那就意味着他会输。
2、小黑和小白取一堆球,小黑与小白交替取一个球,谁取到最后一个黑球谁赢。问:(1)如果有黑球和白球均18个,小黑怎样取能赢?(2)如果黑球比白球多1个,小黑怎样取能赢(第一个球是白球)?
分析:(1)我们分类来找规律,把它们以两个球为一个周期分一组。假设第一个球是白球,那么交替过程见图1:奇数与偶数相邻,能被2整除的数是偶数,偶数号的球全是黑球,像这类的游戏谁后取谁赢,∴根据题意可知,小黑作后手能赢。
(2)题中并没有给出具体的数量,需要我们自己去找,还是同样道理画图,假设从第二个球开始是两个球为一个周期,以18为基准数,那么我们发现,就光多了“黑球比白球多1个”这一小小的要求,就能使每个周期黑球与白球的顺序调过来,那这样就是谁先取谁应赢,∴小黑想取胜,那就要先让小白取一球,这样他一定能赢。

3、接下来请大家思考:如果我把第一个黑球换成黑球,其他已知条件都不变,小黑怎样才能取胜呢?
三、编程环节
1、在编写之前,我们还是先来看一下编写的流程吧。

第一步:程序开始。第二步:输入甲、乙轮流报数的个数,并点击回答。第三步:将“每次报的个数”设为2。第四步:求报的总数除以每次报的个数的余数。第五步判断该结果是否有余数。若有余数,则第五部执行“后报数的人获胜”,否则执行“先报数的人获胜”。
2、接着编写代码的道理和这个也是一样的:
当绿旗被点击
询问甲乙两人轮流抱多少个数?
将报的总数设为回答
将每次报的个数设为2
如果报的总数除以每次报的个数的余数=0那么
说:“先报数的人获胜。”
否则
说:“后报数的人获胜”

3、需要用到的变量:报的总数、每次报的个数