判断回文数的C语言实现
- 所谓回文数,即palindrome ,指从前向后读或者从后向前读数的大小不发生改变的数,比如121、34543这些,在这个算法中,传入一个long类型的参数m,然后把m的值赋给i,当i非零时执行while语句,while语句内部功能是将一个长整形数i转化成这个i从右往左重新排列组成的“倒过来的数”,再把这个倒过来的数和原来的m进行比较就实现了判断是否是回文数的功能。
- 为了更好的理解while内的程序,先让我们简单理解一下:一个数对十取模,得到的数就是它的个位数(比如1886%10=6),一个整形数据除以十得到的数就是它去掉个位数之后组成的比原来少一位数的数(比如1886/10=188)。
- 在这个程序中我们不断把一个长整形数据的个位数分离出来,并把原长整形数从右向左逐渐减少位数,再经过n=n*10+i%10这句程序,就可以得出一个长整形数的“倒过来的数”,例如1886,进入while之前,i=1886,n=0。第一遍进入while,n=6,i=188;满足while条件,第二遍:n=68,i=18;第三遍:n=688,i=1;第四遍:n=6881,i=0;跳出while语句,此时发现6881!=1886,判断得出m不是回文数,返回值为0,实现了判断回文数的功能;
int IsPalindrome(long m)
{
long i, n;
i=m;
n=0;
while(i)
{
n=n*10+i%10;
i/=10;
}
return m==n;
}