解题思路以及注意事项:
每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。
好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!
实例代码:
#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> int main() { int a,ret,b,c; scanf("%d",&a); int B=a,A=a; for(ret=0;a!=0;){ a/=10; ret++; } printf("%d\n",ret); do{ c=A%10; A/=10; printf("%d ",c); }while(A!=0); printf("\n"); do{ b=B%10; B/=10; printf("%d",b); } while(B!=0); return 0;}
#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要努力努力呀 2019-09-11 13:52:42 |
这是正确的,解决了输入为1000或10000的问题
#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; }
#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; } 后写了一个,能通过
#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; } 我用字符数组处理为什么评论我答案错误
uq_17089013375 2020-04-04 19:57:32 |
#include<stdio.h> #include<string.h> int main() { char c[5]; int a,b,s; gets(c); a=strlen(c); printf("%d ",a); for(int i=0;i<a;i++) { printf("%c ",c[i]); } printf(" "); for(int i=a-1;i>=0;i--) { printf("%c",c[i]); } return 0; }
uq_17089013375 2020-04-04 19:58:02 |
这是我的也是错的~~~
#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; }
波塞熙 2019-08-29 21:46:49 |
敲了半天,改了几次,小白瑟瑟发抖
P1001 (C++代码)浏览:823 |
C语言训练-最大数问题 (C语言代码).........关于-1浏览:762 |
C语言考试练习题_保留字母 (C语言代码)浏览:637 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
【亲和数】 (C语言代码)浏览:908 |
输出正反三角形 (C语言代码)浏览:859 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:539 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:1067 |
关于float,double变量的几点说明浏览:1926 |
格式化数据输出 (C语言代码)浏览:882 |