C语言输出水仙花数,请友友们帮我看看代码哪有逻辑错误(玫瑰凋谢.jpg)

#include
int main()
{
int i,m,sum,n;
sum=0;
printf("水仙花数:\n");
for(i=100;i<1000;i++)
{
n=i;
do
{
m=n%10;
n=n/10;
sum=sum+mmm;
}while(n/10!=0);
if(sum==i)

        printf("%d",i);
}
return 0;

}

n%10可能会是小数而不是0,导致无限循环

#include<stdio.h>
int main()
{
     int i,a,b,c;
     for(i=999;i>=100;i--)
     {
         a=i%10;b=(i/10)%10;c=(i/100)%10;
      if (i==a*a*a+b*b*b+c*c*c)
       printf("%d ",i);
     }
     return 0;
}

水仙花都是3位数,可以这样写