关于水仙花数的问题,如何解决?

问题遇到的现象和发生背景

时间限制
2000 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
徐镜春(浙江大学)
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53+ 33。本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

版权声明:本文为CSDN博主「coderstory」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fjinhao/article/details/46853171

问题相关代码,请勿粘贴截图

#include
int main()
{
int number=1,N;

scanf("%d",&N);

int n=N,m=N;
//printf("%d%d",n,m);
while(N>1){
    number *=10;
    N--;}

//printf("%d",number);
int copy=number; 
int sum=0; 
int he=0;
while(number < 10*copy)
{//printf("%d \n",number);
    
    while(m>0)
    
        {
         int pian=number%10;
         int pian2=pian; 
        while(n>1)
            { pian2 *=pian;
            n--;
            }
        
     he += pian2;
    printf("%d",he);
    number %=10;
    m-- ;
        }
    sum +=he;
    if(sum==copy)
    {printf("%d\n",sum);
    }
    number++;
}

 
return 0;

}

我想要达到的结果

能帮我指出其中的错误

代码写的够乱的
1.在c语言中,每个块内,所有的定义必须在所有执行之前,你的scanf后面还有定义,语法就报错了
2.你的程序能在自己电脑上运行了再往网上放
编程90%的功夫在调试
你不能遇到错误全靠猜呀
3.你既然定义了n,m一堆变量,那好好的用起来呀
为什么反复修改number的值
看起来后面number好像++了,但是++之前前面还给它%=10了,这越变越小啊
你这是个典型的死循环

这篇文章:练习题-水仙花数 也许有你想要的答案,你可以看看