这里记录一下我所犯的错误
打印100~1000之间的水仙花数时,我首先用了下面的代码
#include <iostream>
using namespace std;
int main()
{
for (int i = 100; i <= 999; i++)
{
int sum = i;
int a = i % 10;
i = i / 10;
int b = i % 10;
i = i / 10;
int c = i;
if (i == a * a * a + b * b * b + c * c * c)
{
cout << sum<<" ";
}
}
return 0;
}
然后发现出来的结果完全不对。想了一会我意识到for(int i = 100;i<=999;i++)这里的int i = 100;他在这个循环中只会执行一次,而我在后面改变了i的值导致出错所以正确的应该是
#include <iostream>
using namespace std;
int main()
{
for (int i = 100; i <= 999; i++)
{
int sum;
sum = i;
int a = sum % 10;
sum = sum / 10;
int b = sum % 10;
sum = sum / 10;
int c = sum;
if (i == a * a * a + b * b * b + c * c * c)
{
cout << i<<" ";
}
}
return 0;
}
在后面的循环中改变sum而不是i就可以了