如何判断一个数为回文数。某些教材上给出判断五位数的方法,分别分离出个位、十位、千位和万位,然后判断个位和万位、千位和十位是否相等。这种方法的局限性太大,只能判断五位数的回文数。
还有一种思路,把接受到的数字直接存为字符串,然后头尾两个指针逐个比较是否相等,这种方法我其实挺无语的,本来是好好的一个数字,为什么要存成一个字符串呢。。。
接下来介绍另外一种思路:将原数反转,然后进行判断
上代码
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行,这两行的作用就是将原数从个位开始,逐位往高位移动,直到反转完毕。