




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轮:
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!

如果内容对您有帮助,
欢迎关注、转发,点赞!!!
您的鼓励是我们最宝贵的动力!!
欢迎添加梁爸的微信
欢迎关注乐源素质公众号


夜雨聆风