C语言回文数字

写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。

题目:

题目链接:https://www.dotcpp.com/oj/problem1434.html

题目 1434: [蓝桥杯][历届试题]回文数字

时间限制: 1Sec 内存限制: 128MB 提交: 6928 解决: 2895

题目描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499

C语言解法

和普通的回文数差不多 多了一个判断条件

#include <stdio.h>
int main()
{
    int n, count = 0, res = 0, flag = 0,temp;
    scanf("%d", &n);
    for (long int i = 10000; i <= 999999; i++)
    {
        temp=i;
        count = 0;
        res = 0;
        while (temp != 0)
        {
            count += temp % 10;
            res = res * 10 + temp % 10;
            temp /= 10;
        }
        if (res == i && count == n)//注意此处的判断!!
        //所以我们必须要使用一个临时变量去代替i进行取位操作
        {
            printf("%ld\n", i);
            flag++;
        }
    }
    if (flag == 0)
        printf("-1\n");

    return 0;
}


都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。
有事没事进来看看吧 : 小王的博客目录索引
C语言专栏看这 : C语言学习专栏


如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。

猜你喜欢

转载自blog.csdn.net/weixin_45761327/article/details/106663525