求水仙花数,哪里的问题,结果出不来

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。

抱歉,刚学,不太懂,请问是哪里出问题了,求指教

#include <stdio.h>
#include <stdlib.h>
#include<math.h>//pow函数所需
int main()
{
    int n;//n位数
    scanf("%d",n);//输入位数
    int m=1;//用于拆数的运算
    int sum=0;//用于存放每位三次方的总和
    while (n!=0)
    {
        m*=10;  //假如n=3,m最后将等于1000
        n-=1;
    }

 printf("m=%d ",m);//查看m的最终值

    for (int i=m/10;i<m;i++) //假设n=3,i的初始值便为100,要求循环条件为i<1000
    {
       for (int e=1;e<m;e*=10)  //假设n=3,循环条件为e<1000,所以会进行3轮循环
        {
            sum+=pow(i/e%10,3);  //将i/e的三次方,暂存进sum
            /* 假设i=123
            第一轮 e=1 进入循环
                sum=sum+(123/1%10)^3也就是sum=sum+(3)^3
                e=e*10=10
            第二轮 e=10
                sum=sum+(123/10%10)^3也就是sum=sum+(2)^3
                e=e*10=100
            第三轮 e=100
                sum=sum+(123/100%10)^3也就是sum=sum+(1)^3
                e=e*10=1000
                因为e=1000=m,所以无法进入循环/*/


             printf("sum=%d ",sum);//查看sum中的数,可忽略
        }
        if(sum==i)  //如果这个数各位的三次方的和于原本的数相等
        {
            printf("%d ",i);  //输出这个数
        }
        sum=0;//容器归零
    }
    return 0;
}

运行结果
图片说明

sum=sum+(123/1%10)^3也就是sum=sum+(3)^3
你这里123是写死的

重新写一个

#include "stdio.h"
#include "math.h"
void main()
{

    int d,a;
    double n,x,y;
    scanf("%lf",&n);
    x=pow(10,n-1);
    y=pow(10,n);
    for(a=x;a<y;a++)
    {
        int b=a,i,s=0;
        for(i=1;i<=n;i++)
        {
            d=b%10;
            s=s+pow(d,n);
            b=b/10;
        }
        if(a==s)
        printf("%d\n",a);
    }
}