对称数 问题
前不久遇到这样一个题 :输入一个数,判断他是不是对称数,例,121 ,12321,23432都是,但是要求 关键是不可以用字符处理。。哎。。想了半天没搞定。。
头大了。。。
搜索更多相关的解决方案:
121
----------------解决方案--------------------------------------------------------
关键是不可以用字符处理。。
输入的数是不是可以很大啊。12345678912345678987654321987654321
----------------解决方案--------------------------------------------------------
有书上把那种数字称为回文,可以用除10取余的方法,从最低位开始,依次取出该数的各位数字,然后用最低位充当最高位,按反序重新构成新的数,比较与原数是否相等,若相等(因为是对称的,如果对称,反序输出则还是原数),则为回文数了,也是你说的对称数.你自己先按这个方法编一下吧!
----------------解决方案--------------------------------------------------------
有点我还是不明白啊;比如 1234321
1234321%10 余 1
怎么取十位呢?
1234321%100 -1吗?
哦,有点明白了,我去试试
----------------解决方案--------------------------------------------------------
哈哈,楼上的师兄我搞定了,谢谢 你的帮助。我把我写的程序贴上,你看看可以简化或者改善不。
#define N 100
main()
{
int a[N],num,i;
long e,n,b;
printf("please input n:\n");
scanf("%ld",&n);
e=n;
for(i=1;(n-10)>0;i++)
{a[i]=n%10;
n=(n-a[i])/10;}
num=i;
a[num]=n;
for(i=num;i>0;i--)
printf("a[%d]=%d\n",i,a[i]);
getch();
n=0;
for(i=1;i
n=(n+a[i])*10;
b=n+a[num];
printf("%ld\n",b);
if(e==b)
printf("OK,it is DCS");
else
printf("error,it isnot DCS");
getch();}
----------------解决方案--------------------------------------------------------
我用C++编了一下,好像简单点,你自己转为C吧.
#include <iostream>
using namespace std;
void main()
{
bool fun(long n); //用bool型来返回真假
long n;
cin>>n;
if(fun(n))
cout<<"Yes!"<<endl;
else
cout<<"No!"<<endl;
}
bool fun(long n)
{
long i,m;
i=n;m=0;
while(i) //这个while()你分析一下,逐个取数并反序输出就是靠这个循环
{
m=m*10+i%10;
i=i/10;
}
return (m==n);
}
这样就在于ok 了!!!!
----------------解决方案--------------------------------------------------------
师兄,我是通信专业的,自己在学习C,C++不会,C++好学吗?
----------------解决方案--------------------------------------------------------
C++是在C上发展起来的,我也不知道C++好不好学,因为我也是刚学C++,而且C也学得不怎么样.上面的改为C很简单的,把bool改为int 再改一个上面的头文件就行了,还有就是输入输出的表示法不一样.
----------------解决方案--------------------------------------------------------