第一个 n++不要放在for括号里面
只有是水仙花数的时候 才需要n++
所以 放在if(a*a*a... == x)这个判断里面
第二个 换行是'\n' 不是'/n' 打错了。 对于C++来说 用endl更好一些。
#include
int main(void)
{
unsigned int iNum = 100;
unsigned int iDight1, iDight2, iDight3;
unsigned int n = 1;
for (iNum; iNum <= 999; iNum++)
{
iDight1 = iNum % 10;
iDight2 = (iNum % 100) / 10;
iDight3 = iNum / 100;
if (iDight1 * iDight1 * iDight1 + iDight2 * iDight2 * iDight2 + iDight3 * iDight3 * iDight3 == iNum)
{
if (n % 2)
{
printf("%20u", iNum);
}
else
{
printf("%20u\n", iNum);
}
n++;
}
}
return 0;
}
n++位置不对,放在打印以后
格式用C的更好
if(a*a*a+b*b*b+c*c*c==x)
{
if(n%2 == 0)
printf("%20d\n");
else
printf("%20d");
n++;
}
你那个n%2==0后,n没有加上去,永远都是1....应该是输出一个数就自加一下.
输完两个数后,换行,n重置为1.然后继续自加.
水仙花数计算过程没错.
还有,下次提问时,最好直接把程序贴到上来.不要发图.
想帮你调试下也方便点.
#include
#include
using namespace std;
int get_3(int a){
return a*a*a;
}
int main(){
int n=0;
int a,b,c;
int total;
for(int i=100;i<1000;i++){
a=i/100;
b=i%100/10;
c=i%100%10;
total=get_3(a)+get_3(b)+get_3(c);
if(total==i){
cout<n++;
if(n%2==0) cout<}
}
}
楼下正解。我帮你完善了。