编写一个函数,判断某一个整数是否为回文数。所谓回文数是指其各位数字左右对称的整数,例如 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;
}
回文数的判断不需要那么复杂. 直接将该数倒置后判断和原来的数是否相等就行了.
我下面的程序用一个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;
}
附效果图:
"回文数"是一种数字.如: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;
}
#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;
}
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
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息