原题链接:[编程入门]数字的处理与判断
解题思路以及注意事项:
每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。
好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!
实例代码:
#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;
}还有不懂的请在评论区留言,小方会为您解答
0.0分
30 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
@自诩清睾 #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; } }#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只能输出前两个的答案#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); } 这个哪里有问题吗#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; } 求斧正#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; } 救命#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 谢谢