永发信息网

C++回文数的问题

答案:4  悬赏:20  手机版
解决时间 2021-08-01 08:01
  • 提问者网友:我的未来我做主
  • 2021-07-31 07:50

编写一个函数,判断某一个整数是否为回文数。所谓回文数是指其各位数字左右对称的整数,例如 12321 、 789987 、 1 等。调用该函数打印出 1000~10000 之间所有的回文数。

高手指点下哪里错了......

#include<iostream>
#include<cmath>
using namespace std;
int lfh(int x)
{
int a[100];
int c,k;
{
c=log10(x);
for(int i=0;i<=c-1;i++)
{
a[i]=x/(10^i);
a[i]=a[i]%10;
}
for(k=0;k<i;k++)
{
if(a[k]!=a[i-k])
break;
}
if(k==i+1)
cout<<k<<'\t';
}
return k;
}
int main()
{
int m,n,t;
cout<<"请输入范围:";
cin>>m;
cin>>n;
for(t=m;t<n;t++)
lfh(m);
return 0;
}

最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-07-31 08:35

回文数的判断不需要那么复杂. 直接将该数倒置后判断和原来的数是否相等就行了.


我下面的程序用一个while实现将原来的数倒置. 你可以参考下. 有问题还请追问;



#include<iostream>
using namespace std;


int lfh(int x)
{
int c,t=0;
c=x; //将x赋值给c. 用c参与while循环.


while(c)
{
t*=10; //每次将t乘以10, 等于将原本的个位一直往前移动.
t+=c%10; //t每次都加上c现在的个位.
c/=10;


//c每次都除以10. 等于说通过上面将原本的个位取出来以后,就将c中的个位去掉.让十位成为个位
}


if(t==x)
{
cout<<t<<'\t';
return 1;
}
return 0;
}



int main()
{
int m,n,t;
cout<<"请输入范围:";
cin>>m;
cin>>n;
for(t=m;t<n;t++)
lfh(t);


return 0;
}



附效果图:



全部回答
  • 1楼网友:摆渡翁
  • 2021-07-31 11:43

"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字 #include<iostream> using namespace std; void lfh(int x) { int doushu = 0;//x的数倒过来 int Temp = x; while(true) { doushu = Temp % 10 + doushu*10; Temp = Temp / 10; if(Temp==0) { break; } } if(x%11==0 && doushu == x) { cout<<x<<"\t"; } } int main() { int m,n; cout<<"请输入范围:"; cin>>m; cin>>n; for(int t=m;t<n;t++) { lfh(t); } return 0; }

  • 2楼网友:思契十里
  • 2021-07-31 10:31

#include<iostream> #include<cmath> using namespace std; int lfh(int x) { int a[100]; int c,k; { c=log10(x); for(int i=0;i<=c;i++)//应是等于c,否则最高位没求出 { a[i]=x/pow(10,i);//求次方为pow(10,i); a[i]=a[i]%10; } for(k=0;k<i;k++) { if(a[k]!=a[i-1-k]) //i循环完后加了1 break; } if(k==i)//若成功,k==i的 cout<<x<<'\t';//输出x,不是k } return k; } int main() { int m,n,t; cout<<"请输入范围:"; cin>>m; cin>>n; for(t=m;t<n;t++) lfh(t);//参数为t return 0; }

  • 3楼网友:迟山
  • 2021-07-31 09:43

for(int i=0;i<=c-1;i++) { a[i]=x/(10^i); a[i]=a[i]%10; }

这算法有问题

无法把x的各个位放入在a数组中,你自己调试试试

而且for(t=m;t<n;t++) lfh(m);

传入的应该是t ,而不是m

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯