输入n,求n位数的水仙花数

 我这个代码为什么不行

#include 
#include 
int main()
{
    int n,i,j,k,sum;
    scanf("%d",&n);
    for(i=pow(10,n-1);i<=pow(10,n)-1;i++)
    {
       do
       {
           j=i%10;
           k=pow(j,3);
           sum=sum+k; 
       }
       while(j==i);
       if(sum==i)
        printf("%d\n",i);
    }
}


水仙花数不一定是3次方,有多少位就是多少次方的和

#include <stdio.h>
#include <math.h>
int main()
{
    int n,i,j,k,sum;
    scanf("%d",&n);
    for(i=pow(10,n-1);i<=pow(10,n)-1;i++)
    {
        int mid = i;
        sum = 0;
           do
           {
           j=mid%10;
           k=pow(j,n);
           sum=sum+k; 
           mid /= 10;
           }while(mid != 0);
           if(sum==i)
            printf("%d\n",i);
    }
}