| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4896 人关注过本帖
标题:一个用递归实现的把一个十进制整数转换成二进制数的C程序
只看楼主 加入收藏
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
 问题点数:0 回复次数:4 
一个用递归实现的把一个十进制整数转换成二进制数的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 ;
}

搜索更多相关主题的帖子: 二进制数 整数 递归 十进制 
2006-05-16 20:23
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
自己写的代码就像自己的小孩,特别亲切。
祝您写出更优雅、更简洁的递归程序。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-16 20:40
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 

Thanks!!!!


由于工作,N久都没来了!
2006-05-16 20:45
无名bigmouse
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-16
收藏
得分:0 

通过右移操作一下就完成了
#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);
}

2006-05-17 23:31
川普女婿
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-25
收藏
得分:0 
感谢十年前的帖子,帮到了现在的我
2016-11-25 16:32
快速回复:一个用递归实现的把一个十进制整数转换成二进制数的C程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011104 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved