#include <stdio.h>
main()
{
int i,j,n, sum;
for (n = 100; n < 1000; n++)
{
i = n;
for (sum = 0; i > 0; i = i / 10)
{
j=i%10;
sum += j * j * j;
}
if (sum == n)
printf("%d ",sum);
}
return 0;
}
关于这个程序有两个需要注意的点第1个是需要用i来代替n进行中间运算,不能使n的值发生改变,不然则会使n的值衡为1,使程序进入死循,不过你直接n%10 n/10%10 n/100这么写也可以,就不需要用i了;第2个就是第二个for每次循环之前,要对sum重新赋值为0,因为保证每次循环sum的值为0 ,不然sum就是每次水仙花数的累加,最后就是所有水仙花数的和了。循环最后把sum和n进行比较,是一样就是水仙花数。