c语言程序设计对称数,对称数 问题

对称数 问题

前不久遇到这样一个题 :输入一个数,判断他是不是对称数,例,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 再改一个上面的头文件就行了,还有就是输入输出的表示法不一样.

----------------解决方案--------------------------------------------------------

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值