水仙花数组编译问题 编译环境是vs c++

水仙花数组,为什么我这个代码运行不了,编译环境是vs c++

#include<stdio.h>
int main()
{ 
int a[10]={0},i;
int n;
int d1,d2,d3,c;
i=0;
for(n=100;n<999;n++)
{
    c=n;
    d1=n%10;
    n=n/10;
    d2=n%10;
    n=n/10;
    d3=n%10;
    if(d1*d1+d2*d2+d3*d3==c)a[i++]=c;
}
printf("水仙花数为:\n");
for(i=0;i<10;i++)
if(a[i]!=0) printf("%d\n",a[i]);
return 0;
}

你一直在循环内部减小n的值,导致for循环始终无法结束


#include<stdio.h>
int main()
{ 
int a[10]={0},i;
int n;
int d1,d2,d3;
i=0;
for(n=100;n<999;n++)
{
    d1=n%10;
    d2=n%100/10;
    d3=n/100;
    if(d1*d1*d1+d2*d2*d2+d3*d3*d3==n)a[i++]=n;
}
printf("水仙花数为:\n");
for(i=0;i<10;i++)
if(a[i]!=0) printf("%d\n",a[i]);
return 0;
}