望采纳,求求了
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a=100,s,d,f;
for(a=100;a<1000;a++)
{
s=a%10;//求出个位
d=(a/10)%10;//求出十位
f=a/100;//求出百位
if(a==s*s*s+d*d*d+f*f*f)
cout<<a<<" ";
}
cout<<endl;
return 0;
}
该回答内容部分引用GPT,GPT_Pro更好的解决问题
num++ 在循环体站上面时,每次循环num的值会先自增,再进行判断,如果此时的值不满足循环条件则直接跳出,所以答不出水仙花数。 而num++在站下面时,即先进行判断,如果满足条件再进行自增,所以可以答出水仙花数。对于do while循环来说,只要有一次循环体能够执行(即满足循环条件),就能够实现结果的输出。
下面是实现水仙花数的代码:
#include <iostream>
using namespace std;
int main()
{
int i, j, k, num;
for (i=1; i<=9; i++) {
for (j=0; j<=9; j++) {
for (k=0; k<=9; k++) {
num = i*100 + j*10 + k;
if (i*i*i + j*j*j + k*k*k == num) {
cout << num << endl;
}
}
}
}
return 0;
}
如果回答有帮助,望采纳。
因为num++之后,num的值会+1,而a,b,c是从原来的num值中分离出来的各个位上的数,判断条件就变成了:
一个数为N,N的百位^3 + N的十位^3 + N的个位^3 = N+1,这样的N值没有解。
num++在if上面时,因为num++是一个赋值操作,它会先将num的值加1,然后再将加1后的值赋给num,而if语句只会检查num的值,而不会改变num的值,所以num++在if上面时,num的值不会发生变化,所以输出不了。而num++在if下面时,num的值会先发生变化,然后if语句再检查num的值,所以可以输出。
不知道你这个问题是否已经解决, 如果还没有解决的话: