#include <stdio.h>
void main () {
int num,a;
int m =0;
int n;
printf("请输入一个正整数:");
scanf("%d", &num);
n=num;
if(n>0)
{
while(n!=0)
{
a=n%10; /* a =5 4 3 2 1 */
m=m*10+a; /* m=0 5 54 543 5432 54321*/
n/=10; /* n=12345 1234 123 12 1 0 */
}
if(num==m)
{
printf("%d是个回文数",num);
}
else
{
printf("%d不是回文数",num);
}
}
else
{
printf("输入错误,请重输!");
}
}
/*设s反着排列的数为m,我们使用下面方法来生成m:
取出s(12345)末尾数n(5)放到m(0)的末位(初始为0)。这步结束后:m = 5,s = 1234
取出s(1234)末尾数n(4)放到m(5)的末位。这步结束后:m = 54,s = 123
取出s(123)末尾数n(3)放到m(54)的末位。这步结束后:m = 543,s = 124
取出s(12)末尾数n(2)放到m(543)的末位。这步结束后:m = 5432,s = 1
取出s(1)末尾数n(3)放到m(5432)的末位。这步结束后:m = 54321,s = 0 。
s = 0,过程结束。
所以简单来说,就是循环地把s末位数放到m的末位,直到s等于0为止。
那么怎么求一个数末位数?用求余方法,对10求余。比如12345的末位数=12345%10=5。
怎么把一个数字a放到一个数字m的末尾?m*10+a就可以。比如m=0,a=5时, m*10+a = 0*10+5 =5。*/