1009 - 哈哈哈
时间限制:1秒
内存限制:128兆
题目描述
给出一个不多于5位的整数,要求
1、求出它是几位数
2、分别输出每一位数字
3、按逆序输出各位数字,例如原数为321,应输出123
输入
一个不大于5位的数字
输出
三行
第一行 位数
第二行 用空格分开的每个数字,注意最后一个数字后没有空格
第三行 按逆序输出这个数
样例输入
12345
样例输出
5
1 2 3 4 5
54321
对于本题,我自己刚开始想的方法十分暴力,用了五层for循环进行了嵌套,
每一层for循环代表一位数,再用if判断首位到哪里不是0,这是几位数,思路
简单,但是代码十分暴力
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56//方案一,暴力求解 #include<stdio.h> int main() { int a, b, c, d, e, x; scanf("%d",&x); for(a=0;a<10;a++) { for(b=0;b<10;b++) { for(c=0;c<10;c++) { for(d=0;d<10;d++) { for(e=0;e<10;e++) { if(a*10000+b*1000+c*100+d*10+e==x) { if(a==0&&b==0&&c==0&&d==0) { printf("1n"); printf("%dn",e); printf("%d",e); } if(a==0&&b==0&&c==0&&d!=0) { printf("2n"); printf("%d %dn",d,e); printf("%d%d",e,d); } if(a==0&&b==0&&c!=0) { printf("3n"); printf("%d %d %dn",c,d,e); printf("%d%d%d",e,d,c); } if(a==0&&b!=0) { printf("4n"); printf("%d %d %d %dn",b,c,d,e); printf("%d%d%d%d",e,d,c,b); } if(a!=0) { printf("5n"); printf("%d %d %d %d %dn",a,b,c,d,e); printf("%d%d%d%d%d",e,d,c,b,a); } } } } } } } return 0; }
后来我对本题进行了再一次的思考,觉得不应该只能暴力求解,那样过于麻烦,
想了想能不能进行对每一位数字的储存并进行位数计算,结果发现是可行的
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26//方案二, 先定义一个数组对数字的每一位进行存值,再进行对应的输出 #include<stdio.h> int main() { int n, a[10], i=0; scanf("%d",&n); while(n!=0) { a[i]=n%10; //存入个位数字的值 n=n/10; //舍弃个位数字 i++; //将数组的存储位置后移并且对数字进行位数计算 } printf("%dn",i); //计算出来的数字位数 for(int j=i-1;j>=0;j--) //由于每一位的数字是倒序存入,所以这里要进行倒序输出 printf("%d ",a[j]); printf("n"); for(int j=0;j<i;j++) //同理输出 printf("%d",a[j]); return 0; }
最后
以上就是缓慢玫瑰最近收集整理的关于1009 - 哈哈哈的全部内容,更多相关1009内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复