回文数的判断(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;
}

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

相关文章推荐

[leetcode]Valid Palindrome (判断回文数 C语言实现)

Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric ch...

判断回文(c语言实现)

判断回文确实是一个写烂的代码了,创建一个标志位flag即可,但是早上活跃一下头脑,复习一下 题目描述: 给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。 输入: ...

(C语言)回文数的判断

问题描述: 判断一个数是否为回文数; 121; 12321; 1234321; 程序分析:        1. 回文数(palindromic number):是指一个数的最高位和最低位...

数据结构C语言描述———用顺序队列判断回文数

所谓回文数就是正着读跟倒着读一样,比如abcba。用队列判断回文数需要一个栈作为中间量,把一串数字分别进栈和入队,按照栈先进后出和队列先进先出的原则,如果栈顶元素跟队头元素相等,则栈顶元素出栈同时队头...

C语言实现素数,最小公倍数,最大公约数,回文数,质数,完数,水仙花数算法

1. 关于素数的算法: 用两个for循环,外循环是要求的范围,内循环是从2到sqrt(外循环范围中的一个值+1);设置一个flag,来表明是否是素数; 具体实现: #include  #inc...

C语言回文判断

  • 2012-12-11 16:06
  • 179KB
  • 下载

c语言"回文"判断

习题1.1 题目: “回文”是正读和反读相同的字符串,如“232”,“XYZAZYX”等。编写字符串实现判断字符串是否是回文。代码:#include #include #include int H...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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