解题思路:
万位就是这个数整除10000,千位就是这个数减去"整万(比如40000这种)"再整除1000,即原数减去(万位乘一万)再整除10000,以此类推各位的数.
那么怎么知道这个数有多少位数呢?很简单!只需要判断首个非零整数值出现在哪一位上即可!
例如
0 0 9 1 9,
首个非零整数值9出现在百位,那这个数就是一个3位数(个、十、百)xd
至于判断为什么用的是复杂的if......才......才不是因为......因为写Python习惯了,所.....所以才用if的......的呢......绝对不是......(>﹏<)
注意事项:
不要漏了一万、一千的0,导致运算错误!
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)
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复