一、题目介绍
输入描述:
输入一个整数n(1 <= n <= 100000)
输出描述:
从1开始按从小到大的顺序输出所有回文数
回文数:,比如1221,343是回文数,433不是回文数。
二、解体思路
根据回文数的特点,左右对称,因此我们需要进行一一的将整数的各个各位数字分离,在以倒着的方式进行重新组装,使得组装的结果而后原来的数字一致。
例如:
121
我们使用%10和/10的方法分别进行取最低为和除去最低位的方法进行取数,随后在将取出的数,进行倒装,原先百位上的数字1需要变化到个位,原先个位上的数字1要变化到百位,因此我们也需要直到一个整数有多少位,以此才能进行计算。
三、代码演示
#include <stdio.h>
#include <math.h>
int main()
{
int n =0;
int b;
int sum;
int j;
int count;
scanf("%d",&n);
for(int i =1;i<=n;i++)
{
b =i;
count =0;
sum =0;
while(b)
{
count++;
b=b/10;
}//计算位数
j=0;
b=i;
while(b)
{
j++;
sum = sum +((b%10)*pow(10,count-j));
// 原先个位变成最高位,最高位变成个位,列如 123的3要变成百位,1要变成个位
b =b/10;//去除最低为
}
if(i==sum)
{
printf("%d\n",i);
}
}
return 0;
}