本文共 621 字,大约阅读时间需要 2 分钟。
#include<stdio.h>
#include<stdlib.h>#include<math.h>int main()
{ int i, j;int n, tmp[40] = { 0 }, count = 0, sum = 0;scanf("%d", &n);for (i = 0; i < n; i++){ for (j = i; j ; j /= 10){ tmp[count] = j % 10;count ++;}for (j = 0; j < count; j++){ sum += pow(tmp[j], count);}if (sum == i)printf("%d\n", i);count = 0;sum = 0;}system("pause");return 0;}思路:想要打印0~n之间的水仙花数,那就得先判断某一个数 i 是否为水仙花数。通过数位遍历将 i 的每一位数字取出,再使用迭代算出每位数字的次方和并与原数字 i 进行对比,如果相等即为水仙花数。再通过for循环将0~n直接的数挨次遍历,打印出0~n之间的水仙花数。
注:由于0~n之间的数字繁多,所以在判断某一个数 i 是否为水仙花水时再定义一个count,再取出 i 的每位上数字的同时来计算出循环次数即 i 的数位。转载于:https://blog.51cto.com/14233687/2366908