如何判断一个数为回文数。某些教材上给出判断五位数的方法,分别分离出个位、十位、千位和万位,然后判断个位和万位、千位和十位是否相等。这种方法的局限性太大,只能判断五位数的回文数。

还有一种思路,把接受到的数字直接存为字符串,然后头尾两个指针逐个比较是否相等,这种方法我其实挺无语的,本来是好好的一个数字,为什么要存成一个字符串呢。。。

接下来介绍另外一种思路:将原数反转,然后进行判断

上代码

 1 int main()
 2 {
 3         int n;
 4         int temp;
 5         int sum=0;
 6         printf("input:");
 7         scanf("%d",&n);
 8         temp=n;                                 //设置临时变量
 9         do
10         {
11                 sum=sum*10+temp%10;    
12                 temp=temp/10;                   //从最后一位开始,将原数倒序输出
13         }while(temp);
14         if(sum==n)
15                 printf("%d是回文数",n);
16         else
17                 printf("%d不是回文数",n);
18         return 0;
19 }

最关键的地方就是11和12行,这两行的作用就是将原数从个位开始,逐位往高位移动,直到反转完毕。