解题思路以及注意事项:

  每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。

  好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!

实例代码:

#include"stdio.h"
int main()
{
    int x,i,item=10000,number,size;//x用来存用户输入的数,i为控制循环常用的数,item为计算位数的数
    scanf("%d",&x);                //number为替代x的数,以保证x的完整,size为存位数的数,以便后面用
    for(i=5;i>0;i--,item/=10)
    {
        if(x/item)                 // 循环判断位数
        {
            printf("%d\n",i);
            size=i;
            break;
        }
    }
    for(i=0,item=1;i<size;i++)
    {
        item*=10;                   //得出像10000 1000 100 10这样的数,用到下面的循环中去
    }
    for(i=5,number=x;i>0 && number!=0;i--,item/=10)
    {
        if(number/item==0)continue; //保证小于五位的数分开输出前面不会有0
        if(i==1)
            printf("%d",number/item);//最后一位后面没有0
        else
            printf("%d ",number/item);//输出
        number%=item;
    }
    printf("\n");
    for(i=5,number=x;i>0&&number!=0;i--)//逆序输出,相比前面的简单很多,相信大家看的懂
    {
        printf("%d",number%10);
        number/=10;
    }
    return 0;
}

还有不懂的请在评论区留言,小方会为您解答


点赞(26)
 

0.0分

30 人评分

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

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

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

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

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

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

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

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

评论列表 共有 65 条评论

sy要努力努力呀 5年前 回复TA
#include"stdio.h"
int main()
{
    int  a,j,i,item=10000,b,number;
    scanf("%d",&a);
    number=a;
    for(j=5;j>0;j--,item/=10)
    {
        if(a/item)
        {   printf("%d\n",j);
            break;
        }
    }
    for(i=0;i<j;i++,item/=10){
        if(i==0&&a/item==0)
            continue;
        if(i>0&&i<j-1&&a/item==0)
            printf("0 ");
        if(i==j-1)
            printf("%d",a/item);
        else if(a/item!=0)
            printf("%d ",a/item);
        a=a%item;}
    printf("\n");
    while(number)
    {   printf("%d",number%10);
        number/=10;}
    return 0;
}
sy要努力努力呀 5年前 回复TA
不对呀 答案错误
shui670 5年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,d[5],c,e,f;
    while(scanf("%d",&a)==1)
    {
    if(a>99999)
    {
    printf("try again\n");
    continue;
    }
    for(b=10000,e=5;a/b<1;b/=10,e--);
    printf("%d\n",e);
    for(b=10,c=0;c<e;c++,a/=10)
    {
        d[c]=a%b;
        if(c==e-1)
            for(f=c;f>=0;f--)
            {
                printf("%d",d[f]);
                if(f!=0)
                printf(" ");
            }
    }
    printf("\n");
    for(c=0;c<e;c++)
    {
        printf("%d",d[c]);
    }
    printf("\n");
    }
    return 0;
}
小可爱 5年前 回复TA
@酷酷流浪猫 感谢
shinely 5年前 回复TA
@酷酷流浪猫 怎么想到的啊,太巧了
酷酷流浪猫 5年前 回复TA
#include"stdio.h"
int main()
{
	int n,m,i=0,k=1;
	scanf("%d",&n);
	m=n;
	while(m/10!=0)
	{
		m=m/10;
		i++;
	}
	printf("%d\n",i+1);
	for(;i>0;i--)
	{
		k=k*10;
	}
	m=n;
	while(k)
	{
		printf("%d ",m/k);
		m=m%k;
		k=k/10;
	}
	printf("\t\n");
	m=n;
	while(m%10!=0)
	{
		printf("%d",m%10);
		m=m/10;
	}
	return 0;
}
后写了一个,能通过
酷酷流浪猫 5年前 回复TA
#include"stdio.h"
#include"string.h"
int main()
{
	int i,n;
	char a[6];
	gets(a);
	n=strlen(a);
	printf("%d\n",n);
	for(i=0;i<=n;i++)
	{
		printf("%c ",a[i]);
	}
	printf("\n");
	for(i=n-1;i>=0;i--)
	{
		printf("%c",a[i]);
	}
	return 0;
}
我用字符数组处理为什么评论我答案错误
charles 5年前 回复TA
@maina0810 输出结果对的,电脑判断如果格式不对的话,请把 “ printf("请输入一个不大于5位的数\n");”去掉,还有"%d  "这里应该多了一个空格
波塞熙 5年前 回复TA
@波塞熙 敲了半天,改了几次,小白瑟瑟发抖
波塞熙 5年前 回复TA
#include<stdio.h>
int main()
{ 
	int i,I,x,y,z,a=1,b,c=0;
	scanf("%d",&x);
	z=y=x;
	for(i=0;x>0;i++)
	{
		x/=10;
	}
	printf("%d\n",i);
	for(I=1;I<i;I++)
	{
		a*=10;
	}
	int n;
	for(i=1;i<=I;i++)
	{
		n=y/a;
		y=y%a;
		a/=10;
		if(i!=I)
		printf("%d ",n);
		else
		printf("%d",n);
	}
	printf("\n");
	for(i=1;z>0;i++)
	{
		b=z%10;
		c=10*c+b;
		z/=10;	
	}
	printf("%d",c);
	return 0;
}