乐于分享
好东西不私藏

图形化Scratch真题:CCF图形化编程二级真题—数字替换

图形化Scratch真题:CCF图形化编程二级真题—数字替换
注意事项: 
1. 变量名的拼写(包括大小写)要和题目完全一致。
2. 输入变量直接赋值即可,无需使用“询问并等待”积木块。 
3. 输出结果存放在对应变量中即可,无需使用“说…”或“说…,2 秒”积木块。
这是一道CCF的图形化二级编程题目,对于学习图形化小学三,四年级孩子,没有学习过代码的数位分解,结合目前代码化的OJ提交,还是有一定挑战,今天我们就来仔细分析一下这道有趣的数字替换题目。
一:分析题目
题目完全是代码编程题目的形式,对于图形化编程的孩子需要适应和训练,我们从题目中看到,题目里小杨把数字“4”比作酸柠檬,把数字“8”比作甜甜圈,是不是一下子就记住了,今天我们就要把藏在数字队伍里所有酸溜溜的“4”,统统变成甜滋滋的“8”!而且,我们还要让我们的猫利用程序一秒就完成这个任务。
同学们可以想一想,如果我们用眼睛看 8459045,是不是一眼就能找到两个“4”并把它改成“8”。
但是,电脑没有人的这个柔性,它没法一眼就抓住这两个酸溜溜的4,那它怎么办呢?
电脑最擅长的就是一个数字一个数字的排队检查。
具体怎么做呢?
形象一点就像面对一颗结满果子的果树,我们需要一颗颗的摘果子,然后摘一颗检查一颗,符合要求我们就留下,不符合要求我们就按要求处理一下。
二:魔法盒子
好,现在我们去摘这棵果树(这道题)的果子啦!!
那么我们先把这个数字看成是这个果树上的全部果子,那么我们先准备4个摘果子的盒子(变量)
  • A:结满果子的果树(里面装着我们输入数字,比如 8459045)。

  • ans:用来存放检查完了符合要求的果子(也是最后的答案)。

  • r:小托盘,用来接住每次“摘下来”的一个果子(一位数字)。

  • k:最难理解。

    这是相当于是个“位置牌子”。把果子放在规定的位置。(因为数字在不同的位置代表不同的大小(个位代表1,十位代表10,百位代表100……),这个牌子帮我们把数字放到正确的位置上去!

三:摘果子步骤(重复去摘果子)

我们摘这颗果树,就要不停地重复做下面几件事,直到果树A 被摘得光光的(变成0)为止:

第1步:摘下个位

把 A 除以 10,看看余数是多少。(比如 8459045 除以 10,余数是 5。我们就拿到了个位的“5”)把这个余数放进小托盘 r 里。

第2步:检查(判断)是不是“酸柠檬”

我们看看小托盘 r 里装的是不是“4”?如果是4,赶紧扔掉!换成甜甜圈“8”放进托盘里。如果不是4(比如是5),那就原封不动,不用换。

第3步:拼装新数字

把托盘里的数字,按照“位置牌” k 摆好,加到答案 ans 里。第一次是个位(k=1),第二次是十位(k=10),第三次是百位(k=100)……

第4步:扔掉旧个位,准备下一位

A除以10,我们只要整数部分(向下取整),相当于把刚摘下的“5”丢掉。8459045 就变成了 845904(原来的十位“4”就跑到现在个位的位置上啦)!同时,位置牌 k 要乘以10(从个位变成十位,再变成百位……)。

一直重复摘果子,直到果树的果子全部摘完(A 变成 0),就说明所有的数字都被我们检查、改造、放在正确位置啦!

四:编程提示
这道题的重点是四个
1:除以10取余数,得到个位
2:除以10取整数部分,删掉个位(向下取整)
3:按照数字位置累加拼接数字(最难理解)
4:重复执行,直到把数字全部拆完
因此这样的编程题,孩子最好用笔在草稿上梳理一遍整个拆数,拼接的过程。可以按照以下流程来写一遍(根据输入的样例),

第1轮

  • 8459045除以10的余数等于5(r=5)

  • 是4。不用改,放进ans里去(ans=ans+5×1=0+5=5)。

  • 把8459045除以10向下取整,变成 845904(A=8459045/10=845904)

  • 位置牌变10。(k=10)

第2轮

  • 845904除以10的余数=4(r=4)

  • 是4。换成8,按位置牌变成8*10=80,放进ans里去(ans=5+80=85)。

  • 把845904除以10向下取整,变成 84590(A=845904/10=84590)

  • 位置牌变100。(k=100)

第3轮

  • 84590除以10的余数=0(r=0)

  • 不是4。不用改,放进ans里去(ans=85+0×100=85)。

  • 把84590除以10向下取整,变成 8459(A=84590/10=8459)

  • 位置牌变1000。(k=1000)

第4轮

  • 8459除以10的余数=9(r=9)

  • 不是4。不用改,放进ans里去(ans=85+9×1000=9085),

  • 把8459除以10向下取整,变成 845(A=8459/10=845)

  • 位置牌变10000。(k=10000)

第5轮

  • 845除以10的余数=5(r=5)

  • 不是4。不用改,放进ans里去(ans=9085+5×10000=59085),

  • 把845除以10向下取整,变成 84(A=845/10=84)

  • 位置牌变100000。(k=100000)

第6轮

  • 84除以10的余数=4(r=5)

  • 是4。换成8,放进ans里去(ans=59085+8×100000=859085),

  • 把84除以10向下取整,变成 8(A=84/10=8)

  • 位置牌变1000000。(k=1000000)

第7轮

  • 8除以10的余数=8(r=8)

  • 是8。不用换,放进ans里去(ans=859085+8×1000000=8859085),

  • 把8除以10向下取整,变成0(果树摘完)(A=8/10=0

  • 位置牌变100000000。

第7轮数被拆完(果树摘完),程序结束。

看!是不是跟题目要求的一模一样?

如果输入的是 123,道理一样,因为每次都抓不到“4”,所以放进答案的还是1、2、3,最后拼出来还是 123

梳理完逻辑,孩子需要动手按照逻辑完成图形化编程,这样不仅能锻炼思维,还能帮孩子们深刻理解“个、十、百、千”的位值概念,做到一举两得!
以下是参考图形化编程代码:

如果内容对您有帮助,

欢迎关注、转发,点赞!!!

您的鼓励是我们最宝贵的动力!!

欢迎添加梁爸的微信

欢迎关注乐源素质公众号