翁恺C语言—正序整数分解

278 阅读1分钟

输入一个非负整数,正序输出他的每一位数字。

如输入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;

}