水仙花数 C语言求教解决办法

水仙花数 C语言求教
这道题目思考了好久,思路有了,但是代码怎么改都不行,请各位能够帮帮忙,多谢
#include<stdio.h>
int
main()
{
    int N;
    scanf("%d",&N);
    int a,b=1;
    for(a=1;a<=N;a++)
    {
        b*=10;
    }
    int i,k,l,m,n,g;
    for(i=b/10;i<b;i++)
    {
         int n=0;
         g=i;
        for(k=1;k<=N;k++)
    {
        i=i%10;
        int j=1;
        for(m=1;m<=N;m++)
        {
            j=j*i;//求每一位数的幂
        }
        n=n+j;//求各位数幂之和
    }
          if(n==g)
     {
         printf("%d\n",n);
     }
    }
    return 0;
}
------解决方案--------------------
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。

编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。