普遍解法
#include <stdio.h>
int f(int *a,int n)
{
int i=0;
while(n!=0)
{
a[i++]=n%10;
n/=10;
}
return i;
}//结果为逆序,可自行调整
/*
int main()
{
int a[10]={0};
int n1,i;
scanf("%d",&n1);
int n=f(a,n1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}*/
递归解法
#include <stdio.h>
int f(int n,int *a)
{
int i=0;
if(n/10!=0)
{
i=f(n/10,a);
}
a[i++]=n%10;
return i;
}
int main()
{
int a[10]={0};
int i,n;
scanf("%d",&n);
int j=f(n,a);
for(i=0;i<j;i++)
printf("%d ",a[i]);
return 0;
}
由取一个数字每位上的数字,衍生出求一个数字的任意进制
#include <stdio.h>
int f(int *a,int n,int t)
{
int i=0;
while(n!=0)
{
a[i++]=n%t;
n/=t;
}
return i;
}
int main()
{
int a[10]={0};
int n1,i,t;
scanf("%d %d",&n1,&t);
int n=f(a,n1,t);
for(i=n-1;i>=0;i--)
printf("%d ",a[i]);
return 0;
}