#学习解题思路#
题目:求100-999之间的水仙花数。
提示:在求水仙花数之前,首先要知道什么是水仙花数。水仙花数就是一个数算作一个整体,取它各个位数的立方相加等于本身的话那么就可以称这个数为水仙花数。
(想要把这道题解答出来首先需要理清思路。我们的思路可以是这样的:找出100—1000之间的数字——>把这个数字看作一个整体——>先把第一个数字拆开算出他的立方——>再拆第二个第三个——>之后需要依次循环把这些数字全部检查完毕——>那么这里就需要在他们的前面再建立一个循环来判断100-1000内的所有数字——>最后把他们的数字结果都算出来最后判断是否等于它本身——>解答完毕)
那我们就使用上面的思路来解答,首先我们要想找到100-1000内的数字可以使用循环,循环这个区间找到所有数字,即:for(int i=100;i<1000;i++);这里的i代表1从100开始,中间的i<1000代表到999结束,因为小于1000所以最大只能取到999,最后i++。
因为我们要判断100-999这些数字,所以我们要在第一个for循环里面再嵌套一个循环利用下面的规则把这些数字全部检查一遍。
判断思路: 利用第二个循环,我们取到了这个区间的数字之后,在判断第一个数的时候,就需要把他这个整体的数拆开拿出他各个位数拿出来计算他的立方,之后依次把他们的第二个第三个数字拿出来把他们的立方计算出来并且存到一个新的变量里面。
那我们建立一个循环。先定义一个变量,当变量非零为真时进入循环,然后条件就是我们的判断思路,将这个思路循环判断检查每个数字。
那我们如何用代码实现数字拆分。
现在就想,假如一个数字为128,我要是想取它的个位数8,就相当于取它的余数,那么可以写代码为:m%10,然后建立一个变量把他的余数存进去。即:num=m%10;
有了余数那么我们就需要算出他的立方,一个数的立方就是把这个数乘以三次,那么就需要一个变量用来存放这个总数,即:sum+=num*num*num;就可以得到第一个数的立方了。
现在我们还需要第二个第三个数,那么前提需要定义m=i,m接收到i的值然后除以10取出对应各个位数的值。再把他们的立方算出来加在一起,得出总和。
注: 因为第二个循环是在第一个循环的基础上一直循环的,所以当全部数字检测完就会跳出循环。
接下来就判断他们是否是我们想要的数,写一个判断,因为m=i,所以如果m==i的话那么打印出来这个数,如果不等于i的话则过滤掉这个数。即if(m==i);
下面时我写的代码,希望可以帮助到大家: