(C语言)回文数及特殊回文数

本文介绍了如何使用简单方法编程解决回文数和特殊回文数问题,包括生成满足条件的四位和五/六位数,代码示例清晰易懂。

回文数

描述

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输入

输出

按从小到大的顺序输出满足条件的四位十进制数,每个数字成一行。

样例:

1001
1111
1221
1331
1441
1551
........

特殊回文

描述

123321是一个非常特殊的数,它从左边读和从右边读是一样的。

输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入

输入一行,包含一个正整数n。

输出

按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例:

输入:

52

输出:

899998
989989
998899

特殊回文数的代码由回文数代码改编

代码如下:

回文数:

#include<stdio.h>
int main()
{
    int i, m, k;
    for (i = 100; i <= 1000; i++)
    {
        k = i;
        m = 0;
        while (k > 0)//生成回文数
        {
            m = m * 10 + k % 10;
            k = k / 10;
        }
        if (m == i)//判断回文数并输出
            printf("%d\n", i);
    }
    return 0;
}

特殊回文数:

#include<stdio.h>
int main()
{
    int a, b, c, d, e;
    scanf_s("%d", &e);
    for (a = 10000; a <= 1000000; a++)
    {
        c = a;
        b = 0;
        while (c > 0)
        {
            b = b * 10 + c % 10;
            c = c / 10;
        }
        if (b == a)//判断回文数是否成立并开始判断是否满足题第二条件即各项数字之和等于指定数
        {
            d = 0;
            while (b > 0)//计算各项数之和
            {
                d = d + b % 10;
                b = b / 10;
            }
            if (d == e)//判断回文数并输出
                printf("%d\n", a);
        }
    }
    return 0;
}

实际上如果回文数的算法熟悉了那么特殊回文数的算法也同样不难了

算是很基础的两道题

因为有联系所以放在一起了

之前看到站内许多大佬的解法过于复杂了点

这是简单解法

如果觉得此解法能帮到你请给一个点赞谢谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值