前段时间和几个小伙伴讨论过一个问题
1-100中到底有多少个9?
得到了两个答案
19 和 20
那到底该是哪个呢?
先来分析问题,想要找9 无非就是在个位上和十位上找嘛
想找到个位数上的9就模10取余数看等不等于9
找十位数上就除上10看等不等于9
ok,啪!很快啊,代码出来了,我们给出了两种代码
第一个
第二个
一观察就发现这两个代码的区别就在于
else
有else的运行结果为19,没有else的为20
为什么呢?很简单稍加分析,在数1-98时,两个代码都能很好的数出18个9。区别就在99,对第一个代码来说,运行了 if(99%9==0) 之后就退出去了(没有去数十位上的9),此时count =19
而第二个运行了 if(99%9==0) 之后还运行了 if(99/10==9)(数了是为数上的9) 此时count=20
总结
这样一来,20才是正确答案
那19就错了嘛,也不好说
如果题目是数出1-100中含有9的数字的个数的话
答案就是19了
这反应了什么问题呢?我觉得我们应该时刻警惕先入为主的思想
当看到一个题目我们很容易就按照着自己的思路就走了,这可是学习大忌啊。
🆗 文章到这就结束啦,如果有错误的地方希望各位指正,欢迎评论区留言