解题思路:


  1. 万位就是这个数整除10000,千位就是这个数减去"整万(比如40000这种)"再整除1000,即原数减去(万位乘一万)再整除10000,以此类推各位的数.

  2. 那么怎么知道这个数有多少位数呢?很简单!只需要判断首个非零整数值出现在哪一位上即可!

    例如

    0  0  9  1  9,

    首个非零整数值9出现在百位,那这个数就是一个3位数(个、十、百)xd


至于判断为什么用的是复杂的if......

才......才不是因为......因为写Python习惯了,所.....所以才用if的......的呢......绝对不是......(>﹏<)


注意事项:


  1. 不要漏了一万、一千的0,导致运算错误!

  2. if很多,注意条件,复制的时候记得把上一条多出来的删掉=)


参考代码:

#include<stdio.h>

int main(void)
{
    int x,length;
    scanf("%d",&x);
    int a,b,c,d,e;
    a = x/10000;   /*初见端倪*/
    b = (x - a*10000)/1000;
    c = (x - a*10000 - b*1000)/100;
    d = (x - a*10000 - b*1000 - c*100)/10;
    e = (x - a*10000 - b*1000 - c*100 - d*10);
    if (a != 0)     /*一连串的if&else if......是Python风味吧*/
    {
        length = 5;
        printf("%d\n",length);
        printf("%d %d %d %d %d\n",a,b,c,d,e);
        printf("%d\n",e*10000 + d*1000 + c*100 + b*10 + a); 
    }
    else if (b != 0)
    {
        length = 4;
        printf("%d\n",length);
        printf("%d %d %d %d\n",b,c,d,e);
        printf("%d\n",e*1000 + d*100 + c*10 + b); 
    }
    else if (c != 0)
    {
        length = 3;
        printf("%d\n",length);
        printf("%d %d %d\n",c,d,e);
        printf("%d\n",e*100 + d*10 + c); 
    }
    else if (d != 0)
    {
        length = 2;
        printf("%d\n",length);
        printf("%d %d\n",d,e);
        printf("%d\n",e*10 + d); 
    }
    else
    {
        length = 1;
        printf("%d\n",length);
        printf("%d\n",e);
        printf("%d\n",e); 
    }
    return 0;
}

另附赠纯正Python版本:

x = int(input())

a = x // 10000
b = (x - a * 10000) // 1000
c = (x - a * 10000 - b * 1000) // 100
d = (x - a * 10000 - b * 1000 - c * 100) // 10
e = x - a * 10000 - b * 1000 - c * 100 - d * 10

if a != 0:

length = 5
print(length)
print(a, b, c, d, e)
print(e * 10000 + d * 1000 + c * 100 + b * 10 + a)

elif b != 0:

length = 4
print(length)
print(b, c, d, e)
print(e * 1000 + d * 100 + c * 10 + b)

elif c != 0:

length = 3
print(length)
print(c, d, e)
print(e * 100 + d * 10 + c)

elif d != 0:

length = 2
print(length)
print(d, e)
print(e * 10 + d)

else:

length = 1
print(length)
print(e)
print(e)


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论