回文数的判断(C语言实现)

转载 2017年01月03日 12:59:17

http://blog.sina.com.cn/s/blog_5072a15d0100msdb.html 无名小浪

https://zhidao.baidu.com/question/548255538.html zhuhuaizhong

原理:

任何一个数除以10的余数就是该数最后一位
任何一个数除以10的商就是排除掉最后一位后搜索的数(因为 c++ 两个整数相除结果还是整数)

所以 ,一个数1234 就可以通过这种方法得到 123 和 4
接下来对 123 进行同样的操作,就得到 12 和 3
接下来得到 1 和 2
接下来得到 0 和 1

整个过程是个循环,当商不是 0 的时候就一直这么干

每次拿到一个余数,都用来构造新数,新数=新数*10+余数

所以经过四次循环后,我们得到新数 4321 ,如果是回文,那么新数应该等于原数,否则,说明不是回文。

“回文数“是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。

判断一个整数是否是回文数的方法不止一种,最容易想到的一种方法就是:
把整数转换成字符串,然后依次判断字符串前后对称位置的字符是否相等,如果全都相等,则表示该整数是回文数,否则不然。

然而,还有一种更为简洁点的方法则是:
通过对整数的计算,得到该整数的反序整数(最低位变成最高位),判断两者是否相等,是则表示该整数是回文数,否则不然。
以下给出了这种简洁判断方法的C语言代码实例,如下:

--------代码开始--------

#include <stdio.h>
#include <stdlib.h>

int IsHuiWenShu( int );

int main( int argc, char* argv[] )
{
    int num;
    int ret = 0;
    while ( 1 )
    {
        printf( "Please input an interage number:\n" );
        scanf( "%d",& num );
        if ( num == -100 )
        {
            printf( "You input %d, so exit.\n", num );
            break;
        }
        ret = IsHuiWenShu( num );
        if ( ret == 0 )
        {
            printf( "The number %d is not huiwenshu.\n", num );
        }
        else
        {
            printf( "The number %d is huiwenshu.\n", num );
        }
    }

    return 0;
}

int IsHuiWenShu( int number )
{
    int res = 0;
    int n = number;

    if ( n< 0 )
    {
        return 0;
    }

    do
    {
        res = res * 10 + n % 10;
        n = n / 10;
    } while ( n );

    if ( res == number )
    {
        return 1;
    }

    return 0;
}

--------代码结束--------

判断回文数的函数--c的实现

判断回文数的C语言实现
  • HITyangshuo
  • HITyangshuo
  • 2017年03月07日 20:06
  • 731

C语言 编写程序实现回文数的判断。

变写一个c程序实现回文数的判断,例如:12321为回文数。 #include int huiwenshu(int n) { int num=0; while(n) { num=...
  • Yangjiankang_0929
  • Yangjiankang_0929
  • 2015年04月04日 18:32
  • 4439

【C语言】判断回文数及字符串

首先什么是回文数? “回文”是指正读反读都能读通的句子,设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=12...
  • wbq1480
  • wbq1480
  • 2015年04月23日 13:01
  • 1141

C语言判断一个数是否是回文数

“回文数“是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。 判断一个整数是否是回文数的方法不止一种,最容易想到的一种方法就是: ...
  • sinat_23338865
  • sinat_23338865
  • 2015年12月29日 16:16
  • 2811

c语言:顺序栈的应用(二) 判断回文数

#include #include #define STACK_INIT_SIZE 100 #define STACK_INCREMENT 10 using namespace std; t...
  • qq_28598203
  • qq_28598203
  • 2016年03月30日 13:28
  • 1719

【C语言】判断一个数是否为回文数

//判断一个数是否为回文数 #include int fun(int x) { int i,j=0; int a[10]; for(i=0;x!=0;i++) //把整形转到数组中 { ...
  • doudouwa1234
  • doudouwa1234
  • 2015年04月03日 14:54
  • 4016

C语言经典算法100例-030-判断一个数是否为回文数

所谓回文数,即是正序与逆序相等的一个数,如121,12321,10501等。写程序判断输入的数是否为回文数。 1.分析:表面上看,我们似乎要这么做,把各个位分离,然后把第一个数跟最后一个数比较,第二...
  • mrbourne
  • mrbourne
  • 2014年03月05日 15:42
  • 1233

【C语言】判断一个数是不是回文数

所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的。
  • LX18792732127
  • LX18792732127
  • 2016年10月04日 20:29
  • 537

详解判断回文字符串和回文数算法的C语言代码!

本文详细讲解判断回文数和回文字符串的算法原理,并给出了完整的标准C语言代码,且提供标准函数接口,可供大家直接调用!...
  • dcx1205
  • dcx1205
  • 2013年11月03日 21:02
  • 1596

C语言之回文数算法

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。 ...
  • morixinguan
  • morixinguan
  • 2016年02月15日 21:51
  • 3949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:回文数的判断(C语言实现)
举报原因:
原因补充:

(最多只允许输入30个字)