我是靠谱客的博主 缓慢玫瑰,最近开发中收集的这篇文章主要介绍1009 - 哈哈哈,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1009 - 哈哈哈

时间限制:1秒
内存限制:128兆

题目描述
给出一个不多于5位的整数,要求

1、求出它是几位数
2、分别输出每一位数字
3、按逆序输出各位数字,例如原数为321,应输出123

输入
一个不大于5位的数字

输出
三行

第一行 位数
第二行 用空格分开的每个数字,注意最后一个数字后没有空格
第三行 按逆序输出这个数

样例输入

12345

样例输出

5
1 2 3 4 5
54321

对于本题,我自己刚开始想的方法十分暴力,用了五层for循环进行了嵌套,
每一层for循环代表一位数,再用if判断首位到哪里不是0,这是几位数,思路
简单,但是代码十分暴力

//方案一,暴力求解 
#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;
}

后来我对本题进行了再一次的思考,觉得不应该只能暴力求解,那样过于麻烦,
想了想能不能进行对每一位数字的储存并进行位数计算,结果发现是可行的

//方案二, 先定义一个数组对数字的每一位进行存值,再进行对应的输出 
#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 - 哈哈哈所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部