求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;
}

都改好了,你参考一下吧


#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 (z == (d*100+f*10+c))

    {

    cout<<z<<"\t";

    }

    }

 }

 return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-01
看不到你的程序,不过对于1-500这样小范围内的回文数,可以按这样思路来处理:
假设要判断的数为x,先求出x的个、十、百位数顺序颠倒一下所形成的数y(比如,若x=ABC,则y=CBA),然后判断x和y是否相等,相等则x是回文数,否则不是。
下面是输出1-500之间回文数的程序主体部分:
int main(){
int y, x, d, n;

for(n=1; n<=500; n++){
y=0;
x=n;
while(x!=0){
d=x % 10;
y=10*y+d;
x=x/10;
}
if(y==x) cout <<n <<" ";
}
return 0;
}
第2个回答  2015-08-06
//因为没有看见你的代码,所以我就自己写了两种方法吧。希望能对你有所帮助。
#include<iostream>
using namespace std;
//第一种用控制输出的方法。总共循环60次。
void function(){
//一位数全部输出
 for (int i = 1; i < 10; i++){
  cout << i << ' ';
 }
 
 for (int i = 0; i < 5; i++)
 {
  for (int j = 0; j < 10; j++){
   if (i == 0 && j == 0){//00不输出
    continue;
   }
   if (i == 0){//两位数,一样的输出
    cout << j << j << ' ';
   }
   else {//三位数
    cout << i << j << i << ' ';
   }
  }
 }
 
}

//判断是不是回文数字 ,循环500次
bool isFun(int m){
 int a[3];
 a[2] = m / 100;//百位数
 a[1] = m % 100 / 10;//十位数
 a[0] = m % 100 % 10;//个位数
 if (a[2] == 0){//如果是两位数
  if (a[1] == 0){//如果是个位数
   return true;
  }
  if (a[1] == a[0])
  {
   return true;
  }
 }
 else {//如果是三位数
  if (a[2] == a[0]){
   return true;
  }
 }
 return false;
}

int main(){
 function();
 cout << endl;
 int i = 0;
 while (++i < 500){
  if (isFun(i)){
   cout << i << ' ';
  }
 }
 system("pause");
 return 0;
}

第3个回答  2013-03-28
用个子函数吧,这个挺简单的
子函数如下
int h(int n)
{
int s=0;
int m=n;

while(m)
{
s=s*10+m%10;
m/=10;

}
if(n==s)
return 1;
else
return 0;

}

主函数只要判断h子函数返回值是否为零即可,
如果为零,那么就不是回文数

这个代码也可以在主函数中用,具体看你怎么做了
第4个回答  2013-03-28
这两个地方你看看,
if(z<=99||z>=10) //这里应该是指两位数吧, if((z<=99)&&(z>=10))

if (c==d==f) //这里回文是否只需要百位和个位相等,if(c==d)
//并且if (c==d==f) 不能这么写,应该是if((c==d)&&(c==f))
相似回答