今天一个高中生问我一个程序填空题,是关于水仙花数的。所谓的水仙花数,是指一个数的各个位上数字的三次方之和等于它本身。代码如下:
Ps:为了代码格式不变,用的是截图,如果想把图片变成文字直接使用,可以参考下以前的文章《QQ使用小技巧|通过快捷键识别文字》。
学生搞不懂的地方在于为才能要%10,为什么要//之类的。问了学生以下问题:
1、%有什么用?学生知道是求两数相除的余数部分。
2、//有什么用?学生知道是求两数相除的整数部分。
从这个情况来看,学生是掌握了编程的相关知识!接着提问:
任意一个整数除以10,余数是多少?
学生有点懵了,我也就知道她的问题所有了,她没有去总结过相关的结论。余数问题是小学低年级就学过的问题,给她了二个实例,97除以10的余数是几?呢?那个学生很快反应过来了,除以10的余数应该就是个数上的数字。当她得到这个结论之后,求百位,特别是求十位都能说出怎么回事了。
问题解决了,但这也反映出一个问题,编程与数学是密切相关的,平时学习数学有点像一个个知识的堆砌,但编程偏向于规律的总结。学习编程的时候要有归纳总结的意识,这样才能将数学或者其它学科中的内容融入到编程中。
像下面的数学知识用编程很容易解决,但必须要提炼出中间的规律。