解题思路以及注意事项:

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

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

实例代码:

#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 条评论

023方天烁 3月前 回复TA
@自诩清睾 #include<stdio.h> int main () { 	int a , n1 ,n2 , n3 , n4 , n5 , m; 	scanf("%d",&a); 	n1=a/10000; 	n2=(a-10000*n1)/1000; 	n3=(a-n1*10000-n2*1000)/100; 	n4=(a-n1*10000-n2*1000-n3*100)/10; 	n5=(a-n1*10000-n2*1000-n3*100-n4*10); 	if (n1 == 0) 	{ 		if (n2 ==0) 		{ 			if (n3 ==0) 			{ 				if (n4 == 0){ 				m=1; 				printf("%d\n",m); 	            printf("%d\n",n5); 	            printf("%d",n5); 				} 				else{ m=2; 				printf("%d\n",m); 	            printf("%d %d\n",n4,n5); 	            printf("%d%d",n5,n4); 				} 			} 			else{ m=3; 			printf("%d\n",m); 	        printf("%d %d %d\n",n3,n4,n5); 	        printf("%d%d%d",n5,n4,n3); 			} 		} 		else{ m=4; 		printf("%d\n",m);     	printf("%d %d %d %d\n",n2,n3,n4,n5);     	printf("%d%d%d%d",n5,n4,n3,n2); 		} 	} 	else{ m=5; 	printf("%d\n",m); 	printf("%d %d %d %d %d\n",n1,n2,n3,n4,n5); 	printf("%d%d%d%d%d",n5,n4,n3,n2,n1); 	return 0; 	} 	  }
messiu 1年前 回复TA
#include<stdio.h>
#include<math.h>
int main(){
    int a,i;
    int cnt=0;
    scanf("%d",&a); 
    int c=a;
    while(c>0)
    {
    	cnt++;
    	c/=10;
	};
	printf("%d\n",cnt);
	int k=a; 
	for(i=cnt;cnt>=0;cnt--)
	{
		int t;
		int b=pow(10,cnt-1);
		t=k/b;
		k=k%b;
		printf("%d ",t);
	}
	printf("\n");
    for(i=a;i>0;)
    {
		int x=i%10;
		i/=10;
		printf("%d",x);
	}
	
    return 0;
}这个怎末错了啊?我的Dev只能输出前两个的答案
指鹿为马 1年前 回复TA
#include<stdio.h>
#include"math.h"
int main()
{
    int a,b[5],len,rev=0;
    scanf("%d\n",&a);
    for(int l=0;l<5;l++){
        b[l]=a%10;
        len++;
        if(a<10)
            break;
        a=a/10;
    }
    printf("%d\n",len);
    for(int ll=0;ll<len;ll++){
        printf("%d ",b[ll]);
        rev=b[ll]*pow(10,len-ll-1)+rev;
    }
    printf("\n");
    printf("%d\n",rev);
}
这个哪里有问题吗
假正经 1年前 回复TA
@刷题 你让i<=5了,它必须有六个数
2年前 回复TA
你这个不能输出0,题目没有说要把0删除,你这个程序有问题,而且输入五位数就是错的
功夫一定要练 2年前 回复TA
@自诩清睾 和我做法一样,但是不优雅
自诩清睾 2年前 回复TA
#include<stdio.h>
int main ()
{
	int a , n1 ,n2 , n3 , n4 , n5 , m;
	scanf("%d",&a);
	n1=a/10000;
	n2=(a-10000*n1)/1000;
	n3=(a-n1*10000-n2*1000)/100;
	n4=(a-n1*10000-n2*1000-n3*100)/10;
	n5=(a-n1*10000-n2*1000-n3*100-n4*10);
	if (n1 == 0)
	{
		if (n2 ==0)
		{
			if (n3 ==0)
			{
				if (n4 == 0)
				m=1;
				else m=2;
			}
			else m=3;
		}
		else m=4;
	}
	else m=5;
	printf("%d\n",m);
	printf("%d %d %d %d %d\n",n1,n2,n3,n4,n5);
	printf("%d%d%d%d%d",n5,n4,n3,n2,n1);
	return 0;
	
 } 

求斧正
我是废物 2年前 回复TA
#include<stdio.h>

int main()
{
    int x;
    scanf("%d",&x);
    x=12345;
    int cnt=0;
    do{
        x/=10;
        cnt++;
    }while(x>0);
    printf("%d",cnt);
    
    do{
        int d=x%10;
        printf("%d",d);
        if (x>9){
            printf ("");
        }
        x/=10;
    }while (x>0);
    printf("%d");
    
   
    
    int t=0;
    do{
        int d=x%10;
        t=t*10+d;
        x/=10;
    }while (x>0);
    printf("%d",t);
    
    return 0;
    }
    救命
刷题 2年前 回复TA
#include <stdio.h>
int main()
{
	int x,n=0,i,a[5];
	scanf("%d",&x);
    for(i=0;i<=5;i++)
    {
		a[i]=x%10;
    	x=x/10;
    	n++;
		
	}
	printf(" %d\n",n);
	for(i=5;i>=0;i--)
	{   
		printf(" %d",a[i]);
	}
	printf("\n");
	printf(" ");
	for(i=0;i<=5;i++)
	{   
	 	printf("%d",a[i]);
	}
	return 0;
 } 
为什么输入12345输出是5 4 3 2 1 0
谢谢
wwwanna 3年前 回复TA
@MV include前面少了#,main前面不用int