输入一个非负整数,正序输出他的每一位数字。
如输入12345
输出 1 2 3 4 5
———————————————————————————————————————————————————————————————————————————————— (我的代码)
#include <stdio.h>
#include <math.h>
int main()
{
int x,i=0,j,p,digit;
printf("输入一个正整数:");
scanf("%d",&digit);
x=digit;
p=digit;
while(x!=0){ //判断位数
x/=10;
i++;
}
printf("该数为%d位数\n",i); //得到结果:i位数
for(i;i>=1;i--){
for(j=1;j<i;j++){
digit=digit/10; //通过循环 整除(i-1)*100找到第一位数字,比如 123/100=1 ;23/10=2
}
printf("%d ",digit); //正序输出
digit=p-digit*pow(10,i-1);//找到第一位便剔除 ,比如 123-1*100 =23
p=digit; //把digit交予p,以作存储
}
return 0;
}
—————————————————————————————————————————————————————————————————————————————————————————— (老师的代码)
#include <stdio.h>
int main()
{
int mask=1,x,t;
printf("输入一个正整数:");
scanf("%d",&x);
t=x;
while(x>9)
{
x/=10;
mask*=10; //计算位数的同时,找到最高位 12345→10000
}
printf("%d\n",mask);
do
{
int d=t/mask; //12345→1
printf("%d ",d);
t=t%mask; //12345→2345
mask/=10; //10000→1000
}while(mask>0);
return 0;
}