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

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

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

比如一个数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; 颠倒完毕

#include <stdio.h>

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;
}


  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值