c水仙花数一直01死循环

#include<stdio.h>
#include <math.h>
int main(){
int t,n;
scanf("%d",&t);
scanf("%d",&n);
int a,b;
a=pow(10,n-1);
b=pow(10,n);
for(int i=a;i<b;i++)
{
int k[3]={0,0,0},sum=0;
for(int j=0;j<n;j++)
{
printf("%d\n",i);
k[j]=i%10;
sum+=pow(k[j],n);
i=i/10;
}
while(i==sum)
{printf("%d",sum);
break;}
}
return 0;
}

i=i/10卡死
新代码如下,#include<stdio.h>
#include <math.h>
int main(){
int t,n;
scanf("%d",&t);
scanf("%d",&n);
int a,b;
a=pow(10,n-1);
b=pow(10,n);
for(int i=a;i<b;i++)
{
int k[3]={0,0,0},sum=0,jx=1;
for(int j=0;j<n;j++)
{
k[j]=i/jx%10;
sum+=pow(k[j],n);
jx*=10;
}
while(i==sum)
{printf("%d\n",sum);
break;}
}
return 0;
}

看你这代码不像求水仙花数,看这里把
https://baijiahao.baidu.com/s?id=1672074399379096555&wfr=spider&for=pc


1.程序分析:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

main()

{

int i,j,k,n;

system("title C语言");

printf(“‘water flower’number is:”);

for(n=100;n<1000;n++)

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf(“%-5d”,n);

}

}


}