按照你的逻辑来,
i 最开始是1000
j = i; 那么j 也是1000
whille 循环你用 i,分别求每一位的 4 次方
ok。。。。错误来了,你有想过吗?i 最后为几?i 经过你这么一系列 除法之后,i 最后结果为1,sum 为几?也为1
ok。。。i 为1 了,退出for 循环了
明白问题的地方了吗?
你外层用i,内层还用i啊
内层乱改i的值,不死循环了
while循环中的i全部换成j,不能再用i啦
然后最后的if判断应该是sum == i,输出的也应该是i。你全用反了
按图里标示的修改:
#include <stdio.h>
int main()
{
int i, j, sum = 0;
for (i = 1000; i <= 9999; i++)
{
j = i;
sum = 0;
while (j > 0)
{
sum += (j % 10)*(j % 10)*(j % 10)*(j % 10);
j /= 10;
}
if (sum == i)
{
printf("%d\n", i);
}
}
return 0;
}
把for循环内,除了第一句外的所有用到i的地方全部改成j