原题链接:[编程入门]数字的处理与判断
解题思路以及注意事项:
每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。
好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!
实例代码:
#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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
c = Num; for (i = size, x = 0; Num > 0; i--, x++) { a[x] = Num / b; //储存每一位数上面的数字 Num = Num % b; if (x == size - 1) // 确保最后一个数字后面没有空格 { printf("%d", a[x]); } else printf("%d ", a[x]); b /= 10; } printf("\n"); //全部归位 x = 0; i = size; Num = c; for (b = 10; i > 0; i--, x++) { a[x] = Num % b; // 8123 Num = Num / b; printf("%d", a[x]); } return 0; }#include <stdio.h> int main(void) { int Num = 0; //输入的数字 int b = 10000; //判断位数 int i = 0; //控制循环 int size = 0; //储存循环次数 int c = 0; //储存Num scanf_s("%d", &Num); //判断循环位数 if (Num >= 100000) { printf("请输入一个五位数\n"); scanf_s("%d", &Num); } for (i = 5; i > 0 && b != 0; b /= 10, i--) { if (Num / b) { printf("%d\n", i); //输出位数 break; } } b = 1; size = i; //输出每一位数上面的数字 int a[100] = { 0 }; int x = 0; for (i = 1; i < size; i++) { b *= 10; } c =#include<stdio.h> #include<math.h> int main(void) { int a, b=0, x=0,y=0,temp; scanf("%d", &a); temp = a; while (a > 0 && a < 99999) { b = a; while (b)//确定输入是几位数 { b = b / 10; x++; } printf("%d\n", x); b = pow(10, x - 1);//求出10的几位次方,求余使用 while (a)//正序读出并且输出 { y = a / b; a = a %b; b = b / 10; printf("%d ", y); } printf("\n"); b = 0; x = 0; a = temp; while (a)//反向读出 { b = a % 10; a = a / 10; printf("%d", b); } } return 0; }#include<stdio.h> #include<math.h> int main(void) { int a, b=0, x=0,y=0,temp; scanf_s("%d", &a); temp = a; while (a > 0 && a < 99999) { b = a; while (b > 0)//确定输入是几位数 { b = b / 10; x++; } printf("%d\n", x); b = pow(10, x - 1);//求出10的几位次方,求余使用 while (a > 0)//正序读出并且输出 { y = a / b; a = a %b; b = b / 10; printf("%d ", y); } printf("\n"); b = 0; x = 0; a = temp; while (a > 0)//反向读出 { b = a % 10; a = a / 10; printf("%d", b); } } }#include<stdio.h> #include<math.h> int main(void) { int a, b=0, x=0,y=0,temp; scanf_s("%d", &a); temp = a; while (a > 0 && a < 99999) { b = a; while (b > 0) { b = b / 10; x++; } printf("%d\n", x); b = pow(10, x - 1); while (a > 0) { y = a / b; a = a %b; b = b / 10; printf("%d ", y); } printf("\n"); b = 0; x = 0; a = temp; while (a > 0) { b = a % 10; a = a / 10; printf("%d", b); } } }@酷酷流浪猫 #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; }麻烦大家看一下到底错在哪了,系统说我有没想到的地方,难道是忽略了负数的情况吗 跪求了,谢谢 #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;}