C语言 回文对称数

一、题目介绍

输入描述:

输入一个整数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;
}

猜你喜欢

转载自blog.csdn.net/2301_76445610/article/details/132153502