不知道哪里错了,想要用二重循环输出 水仙花数

img

img


#include
#include
int main()
{
int t,a,n,m,i;
double sum=0;
for(i=100;i<10000;i++)
{
n=i;
m=i;
if(i<1000)
t=100;
else
t=1000;

        for(;t>0;)
        {a=n/t;
        n=n%t;
        t=t/10;
        printf("%d\n",a);
        sum=sum+pow(a,3);
        }
        if(m==sum)
        {printf("%d\n",m);}
    }
return 0;

}
不知道哪里错了,想要用二重循环输出 水仙花数


#include<stdio.h>
#include<math.h>
int main()
{
    int t, a, n, m, i;
    long sum = 0;
    for (i = 100; i < 10000; i++) //统计每位立方和是否等于它本身
    {
        //实际上就是对i进行处理  判断i是否满足条件
        n = i;
        m = i;
      /* if (i < 1000) //这么处理t是有啥意义 
            t = 100;
        else
            t = 1000;
        for (; t > 0;) //上面你本身就i就遍历了100~10000 应该处理的是i吧   
        {
            a = n / t;
            n = n % t;
            t = t / 10;
            printf("%d\n", a);
            sum = sum + pow(a, 3);
        }*/ 

        t = i;
        for (; t != 0;) //上面你本身就i就遍历了100~10000 应该处理的是i吧   
        {
            a = t % 10; //依次取个位,求立方和  遍历完就是取每位
            t = t / 10;
            sum = sum + pow(a, 3);
        }

        if (m == sum) //i本身和这个sum求的结果要一样是水仙花数
        {
            printf("%d\n", m);
        }
        sum = 0; //每次要对sum重置
    }
    return 0;
}

sum需要定义成int类型
浮点类型由于精度问题不适合判断是否相等