请找出一条C++程序中的错

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:02:04
以下是一个找出三位数中百位数的三次方加上十位数的三次方加上个位的三次方等于该三位数的程序,可是运行不了,请问它错在哪里?
#include <iostream>
using namespace std;
int main()
{
int i=100, j ,k ,n;
for(k=i%10, j=((i%100)/10), n=i/100;i<1000;i++)
if(i==(n^3)+(j^3)+(k^3))
cout<<i<<endl;
}
要运行程序后它自己就能找出所有符合条件的三位数,不再需要输入任何东西。

#include <iostream>
using namespace std;
int main()
{
int i=100, j ,k ,n;
//for(k=i%10, j=((i%100)/10), n=i/100;i<1000;i++) //////注意=和,的优先级问题
for((k=i%10), (j=((i%100)/10)), (n=i/100);i<1000;i++,(k=i%10), (j=((i%100)/10)), (n=i/100)) //(k=i%10)也要放在最后的;后面,否则不会每次i++的时候,执行一次的
//if(i==(n^3)+(j^3)+(k^3)) ////////^表示异或,而不是多次方
if(i==(n*n*n)+(j*j*j)+(k*k*k))
cout<<i<<endl;

return 0;////main函数要有返回值
}

另外,建议楼主,不要写那么复杂的代码,不仅把自己搞晕,也把别人搞晕,没有任何意思的。
高手写程序,并不是写的多简短,而是写的多高效、易懂。 比如改成下面这样:
#include <iostream>
using namespace std;

int main()
{
int i, j ,k ,n;

for(i=100;i<=1000;i++)
{
k=i%10;
j=((i%100)/10));
n=i/100;
if(i==(n*n*n)+(j*j*j)+(k*k*k))
{
cout<<i<<endl;
}
}
return 0;
}

你的算法有一定的问题
j=((i%100)/10)达不到你的预计目标
你可以自己随便找一个数字试一下
并不是你预期的数