回文数便是从左向右看和从右向左看都是一样的,如121
那么我们可以将原数中的每一位数放入数组的一个格子里,随后从两边依次向中间两两比较,如果将整个数组比完都相同,则此数为回文数
为了将原数变为数组而不浪费空间,就需要求得原数的长度,可以自己写一个len()数组:
int len(int n){
int temp=n,l=0;//l为数字的位数
while(temp>0){
temp/=10;
l++;
}
return l;
}
原理为:一直将temp除以10,时原数缩小一位,这时使l加1。当temp==0时,说明已经除尽,此时l的值就是原数的位数
知道了原数的长度后就可以开始将原数转换为数组了:
int num[len(n)],i=0,temp=n;
while(temp>0){
num[i]=temp%10;
temp/=10;
i++;
}
随后判断回文数:因为一次判断两个数是否相等,那么循环的次数只需要i/2次(如果原数是奇数,则中间的那个数等于自身,可以不做判断)
for(int j=0