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

转载地址

有这样一类数字,他们顺着看和倒着看是相同的数,例如: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;  

}  

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,428评论 0 2
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 3,317评论 0 19
  • 渴望死亡 让感觉 一寸寸消失 心已冰冷 美梦 侵蚀空虚的灵魂 千百年后 我成为化石 以考古学家的话 骄傲
    湘中布衣秀才阅读 212评论 0 0
  • 一. JavaScriptCore 简介 1.1 JavaScriptCore 和 JavaScriptCore ...
    GShining阅读 872评论 0 0
  • 前不久我转到一个本地化项目做安卓测试,还只有一个安卓测试那种。这要是测得不好就有点尴尬了,这么觉得的我于是想着虽然...
    洛姆阅读 1,914评论 4 2