您的位置:首页 > 其它

递归实现十进制转X进制

2006-01-09 23:36 309 查看
递归实现十进制转X进制


作者:yxin1322



blog:http://blog.csdn.net/yxin1322 转载请注明出处

我们在初学进制转换的时候,最常用的十进制转换其他进制方法当数“除n取余法”了,其中n是目标进制的基数。例如我们要把十进制的9转换成2进制,用除2取余法有如下过程:
2 | 9
-----
2 | 4 ..... 1
------
2 | 2 ..... 0
------
2 | 1 ..... 0
------
0 ..... 1
将每一步的余数自下而上输出即得9的二进制表示,把除数2换成其他整数还可以得到9的其他进制的表示。模拟这一过程,编写了函数Convertor,可以完成十进制到任意进制数的转换。代码如下:
1    /*
2             code by: yxin1322
3                date: 2006.1.8
4                blog: http://blog.csdn.net/yxin1322 5               Email: yxin1322@gmail.com
6     */
7    #include <stdio.h>
8    
9    void Convertor(int n, int base); /*n为待转换十进制数,base为目标进制基数*/
10    
11    int main()
12    {
13    	Convertor(34,2);
14    	printf("/n");
15    }
16    
17    void Convertor(int n, int base)
18    {
19    	int temp=n%base;
20    	n=n/base;
21    
22    	if(n==0)
23    		printf(" %d",temp);
24    	else
25    	{
26    		Convertor(n,base);
27    		printf(" %d",temp);
28    	}
29    }

调用函数Convertor(34,2),输出“1 0 0 0 1 0”,即为34的二进制码。需要说明的是,当进制基数大于10时,程序并没有安排其他字母来代替大于10的数字,如当调用形式为Convertor(31,16)时,输出为“ 1 15”,它相当于16进制表示法的1F,程序仅简单地将结果的数位之间用空格隔开。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: