美文网首页
算法分析---回文数判断

算法分析---回文数判断

作者: 菜菜编程 | 来源:发表于2018-06-14 16:35 被阅读32次

    转载地址

    有这样一类数字,他们顺着看和倒着看是相同的数,例如:1111,1221,2332等,这样的数字就称为:回文数字。

    回文数的判断有多种算法,直观一点的就是将数字顺序颠倒后再与原数字进行比较,如果相等说明该数字是回文数字,如何颠倒数字的顺序便是难点。

    比如一个数12345。

    12345 % 10 得到的是个位上的5

    12345 / 10 得到1234

    1234 % 10 得到十位上的4

    1234 / 10 得到123

    123 % 10 得到百位上的3

    123 / 10 得到12

    12 % 10 得到千位上的2

    12 / 10 得到1

    1 % 10 得到万位上的1

    可见通过求余运算来求各个位上的数,通过除法运算来降位(指的是由万位降到千位,千位再降到百位)

    现在开始颠倒数字

    第一步:

    12345 % 10 = 5;求个位上的数

    12345 / 10 =1234;降位

    第二步:

    1234 % 10 = 4;求十位上的数

    1234 / 10 = 123; 降位

    5 * 10 + 4 = 54;开始颠倒

    第三步:

    123 % 10 = 3; 求百位上的数

    123 / 10 = 12; 降位

    54 * 10 + 3 = 543; 继续颠倒

    第四步:

    12 % 10 = 2; 求千位上的数

    12 / 10 = 1; 降位

    543 * 10 + 2 = 5432; 继续颠倒

    第五步:

    1 % 10 = 1; 求万位上的数  

    1 / 10 = 0; 降位

    5432 * 10 + 1 = 54321; 颠倒完毕

    [cpp] view plain copy

    #include   

    int IsPalindrome(int iNumber);   

    void main(){  

    if(IsPalindrome(121)){  

    printf("是回文数\n");  

        }  

    else{  

    printf("不是回文数\n");  

        }  

    }  

    int IsPalindrome(int iNumber){  //判断是否为回文数的函数  

    int temp=0;  

    int number = iNumber;  

    while(number){   //颠倒数后保存到temp中  

            temp=temp*10+(number%10);  

            number=number/10;  

        }  

    if(iNumber==temp) //是回文数,返回1  

    return 1;  

    else  

    return 0;  

    }  

    相关文章

      网友评论

          本文标题:算法分析---回文数判断

          本文链接:https://www.haomeiwen.com/subject/gmbyeftx.html