求c++高手看看我的编程怎么错了 求1到500回文数 (例如5 121 232 454 正反都一样的数)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int z,a,b,c,d,e,f;
for(z=1;z<=500;z++)
{
if(z<10)
{
cout<<z<<"\t";
}
if(z<=99||z>=10)
{
a=z/10;
b=z%10;
if (a==b)
{
cout<<z<<"\t";
}
if(z>=100)
c=z/100;
d=z%10;
e=z/10;
f=e%10;
if (c==d==f)
{
cout<<z<<"\t";
}
}
}
return 0;
}

第1个回答  2013-03-28
共同探讨下哈!
① if(z<=99||z>=10)应该是if(z<=99&&z>=10),介于10-99之间的所有两位数

② if(z>=100)之前应该加'}'对应if(z<=99&&z>=10)的左括号
③ if (c==d==f)的结果其实是:1)判断c==d,返回一个true或false,2)判断(上步中的返回值)==f
你希望表达的应该是if ((c==d)&&(d==f)&&(c==f))

但是这里不需要判断三个数都相等,只需要百位和个位相等即可,得if (c==f)

请参考~
第2个回答  2013-03-28
int a,b,c,z;
for(z=1;z<500;z++)
{
if(99<z<500)
{ a=z/100;
b=(z-a*100)/10;
c=(z%100)%10;
if(a==c)cout<<"z为回数:"<<z<<endl;}
else if(9<z<100)
{
a=0;
b=z/10;
c=z%10;
if(b==c)cout<<<<"z为回数:"<<z<<endl;}
return 0;
}
第3个回答  2013-03-28
经过一番调试之后我修改完了。
#include<iostream>#include<iomanip>
using namespace std;
int main()
{
int z,a,b,c,f;
for(z=1;z<=500;z++)
{
if(z<10)
{
cout<<z<<"\t";
}
if(z<=99&&z>=10)
{
a=z/10;
b=z%10;
if (a==b)
{
cout<<z<<"\t";
}
}
if(z>=100)
{
c=z/100;
f=z%10;
if (c==f)
{
cout<<z<<"\t";
}
}
}

return 0;}
相似回答