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类型
浮点类型由于精度问题不适合判断是否相等