原来我用比较中规中矩的方法
#include<stdio.h>
int isPalindromeNumber(int num)
{
int arr[6] = { 0 };
int tmp = num;
int d = 1, j = 0;
//求位数
while (num / 10)
{
d++;
num /= 10;
}
//把每位正序放到数组里
for (j = d - 1 ; j >= 0; j--)
{
arr[j] = tmp % 10;
tmp /= 10;
}
//遍历数组查询左右是否相等
int* left = arr;
int* right = arr + d - 1;
while (left<right)
{
if (*left == *right)
{
left++;
right--;
}
else
{
break;
}
}
//>表示输入的数字位数为偶数时,left会大于right
if (left >= right)
return 1;
else
return 0;
}
int main()
{
int n = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
if (isPalindromeNumber(i))
printf("%d\n", i);
}
return 0;
}

京公网安备 11010502036488号