求答案(C语言)
将一个十进制整数N(unsignedlong)的一个数位拆开显示(每个数字中间用空格隔开)。例如N=123456,输出必须是:123456分拆整数N必须单独写成函数,ma...
将一个十进制整数N(unsigned long)的一个数位拆开显示(每个数字中间用空格隔开)。例如N=123456,输出必须是: 1 2 3 4 5 6
分拆整数N必须单独写成函数,main函数负责输入N,并调用上述函数;分拆函数必须提供两个版本(一个递归,一个非递归),所有结果输出都在分拆函数中完成。 展开
分拆整数N必须单独写成函数,main函数负责输入N,并调用上述函数;分拆函数必须提供两个版本(一个递归,一个非递归),所有结果输出都在分拆函数中完成。 展开
2个回答
展开全部
非递归
void fun(unsigned long n)
{
int a[64] = {0};
int len = 0,i;
do{
a[len] = n % 10;
n /= 10;
len++;
}while(n > 0);
for(i = len - 1; i >= 0 ; i--)
{
printf("%d ",a[i]);
}
}
递归:
void fun(unsigned long n)
{
if(n < 10)
{
printf("%d", n);
return;
}
else
{
unsigned long m = 1;
while(n > m * 10)
{
if(m < m*10) //当n值与unsigned long 最大值的位数一样的时候,m就会比m*10大
m *= 10;
else
break;
}
printf("%d ",n / m);
fun(n % m);
}
}
void fun(unsigned long n)
{
int a[64] = {0};
int len = 0,i;
do{
a[len] = n % 10;
n /= 10;
len++;
}while(n > 0);
for(i = len - 1; i >= 0 ; i--)
{
printf("%d ",a[i]);
}
}
递归:
void fun(unsigned long n)
{
if(n < 10)
{
printf("%d", n);
return;
}
else
{
unsigned long m = 1;
while(n > m * 10)
{
if(m < m*10) //当n值与unsigned long 最大值的位数一样的时候,m就会比m*10大
m *= 10;
else
break;
}
printf("%d ",n / m);
fun(n % m);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询