当前位置: 代码迷 >> C语言 >> 一个用递归实现的把一个十进制整数转换成二进制数的C程序
  详细解决方案

一个用递归实现的把一个十进制整数转换成二进制数的C程序

热度:266   发布时间:2006-05-16 20:23:00.0
一个用递归实现的把一个十进制整数转换成二进制数的C程序

前几天看一些同学编写的程序转换几乎都用了数组,其实用递归会很简单,但算法不是很好,当数字很大时会占用很大的内存,同时计算时间会加长。但可以直接实现逆向输出。
#include <stdio.h>
void to_B (unsigned int num1);
int main ( void )
{
unsigned int a;
printf ("Input the number :");
while (1==scanf ("%u",&a))
{
to_B (a);
putchar ('B');
printf ("\nInput the number :");
}
return 0;
}
void to_B (unsigned int num1)
{
unsigned int x=0;
if (num1>0)
{
x=num1%2;
to_B(num1/2);
printf ("%u",x);
}
else
{ if (num1%2)
putchar('1');
else
putchar('0');
}
return ;
}

搜索更多相关的解决方案: 二进制数  整数  递归  十进制  

----------------解决方案--------------------------------------------------------
自己写的代码就像自己的小孩,特别亲切。
祝您写出更优雅、更简洁的递归程序。
----------------解决方案--------------------------------------------------------

Thanks!!!!


----------------解决方案--------------------------------------------------------

通过右移操作一下就完成了
#include <stdio.h>

/*如果事先不知道a的位数的话,可以这样写*/
void Dec2Bin(unsigned int a)
{
int i, j, tmp;
int b[32], nb = 0;
while (a != 0)
{
b[nb] = a & 1;
nb++;
a >>= 1;
}
for (i=0, j=nb-1; i<nb/2; i++, j--)
{
tmp = b[i];
b[i] = b[j];
b[j] = tmp;
}
for (i=0; i<nb; i++) printf("%d", b[i]);
printf("\n");
}

void Dec2Bin_1(unsigned int a, const int na)
{
int i;
for (i=0; i<na; i++) printf("%d", a>>(na-1-i)&1);
printf("\n");
}

void main()
{
Dec2Bin(0x12ab);
}


----------------解决方案--------------------------------------------------------
  相关解决方案