解题思路以及注意事项:
每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。
好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!
实例代码:
#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分
41 人评分
#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; } 求斧正
功夫一定要练 2022-11-16 19:38:59 |
和我做法一样,但是不优雅
023方天烁 2024-10-08 09:45:48 |
#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> 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 谢谢
假正经 2023-02-09 13:02:52 |
你让i<=5了,它必须有六个数
include<stdio.h> int main() { int b,i,a; i=1; scanf("%d",&b); a=b; while(a>10) { a=a/10; i++; } printf("%d",i); return 0; } 我是求位数,为什么编译错误?求指点
wwwanna 2021-10-07 21:47:02 |
include前面少了#,main前面不用int
测试1230的时候第二个数据输出的是1 2 3
五仁月饼 2021-02-22 14:10:03 |
for(i=5,number=x;i>0 && number!=0;i--,item/=10)因为这个for循环中的条件不成立了,所以后面呢的0都不会输出了。