解题思路以及注意事项:
每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。
好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!
实例代码:
#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 num;//键盘输入数 int count = 0;//位数计算 int sum = 0;//倒序数 int a[5] = {0};//输入数各位数字值 printf("请输入一个不大于5位的数\n"); scanf("%d",&num); do { count++; a[count-1] = num%10;//存各位数字值 sum*=10; //实现位数左移,以便下一步骤以个位加入 sum += num%10;//每次获得一位数 num/=10;//将已经获得的位数去掉 } while (num != 0); printf("%d\n",count);//位数 for(int i = count-1; i >= 0;i --) printf("%d ",a[i]); printf("\n%d\n",sum); return 0; } //想请问下各位兄弟,为什么我这个代码不对?有点搞不懂.
charles 2019-09-03 17:28:45 |
输出结果对的,电脑判断如果格式不对的话,请把 “ printf("请输入一个不大于5位的数\n");”去掉,还有"%d "这里应该多了一个空格
#include<stdio.h> #include<math.h> int main() { int i=0,n=0,k=0,m=0,y=0,number=0; scanf("%d", &i); k = i; //用k保存输入的数 while (i > 0) { i /= 10; n+=1; } printf("%d\n", n); y = n; //用y保存输入的位数 for (int j = 0; j < y; j++) { n--; m = pow(10,n); number = (k / m)%10 ; printf("%d ", number); } printf("\n"); for (int l = 0; l < y; l++) { m = pow(10, n); number = (k / m) % 10; printf("%d", number); n++; } return 0; }
这代码写错了,如果五位,输出会少一位。
1810819101 2019-02-07 20:12:33 |
问下item/=10是什么意思?
何足道 2019-02-14 16:43:14 |
它可以化成这样 item=item/10
Hao1 2019-02-25 22:06:23 |
把15行的0改成1即可
#include<stdio.h> int main() { int a[5],b,i,n,j,r,k; scanf("%d",&b); for (i=0;r!=0;i++) { a[i]=b%10; b=b/10; if (a[i]==0 && b==0) { r=0; n=i; } } printf("%d\n",n); for (j=n-1;j>-1;j--) { if(j>0) printf("%d ",a[j]); else printf("%d",a[j]); } printf("\n"); for (k=0;k<n;k++) printf("%d",a[k]); } 求解 哪里错了/流泪
#include<stdio.h> #include<string.h> int main() { char c[5]; int n,i; gets(c); n=strlen(c); printf("%d\n",n); for(i=0;i<n-1;i++) printf("%c ",c[i]); printf("%c",c[n-1]); printf("\n"); for(i=n-1;i>=0;i--) printf("%c",c[i]); printf("\n"); return 0; } 请问这样写为什么不对呢?