将10进制数转换成任意进制数

要想解决这个问题我们先来看看10进制转2进制的代码

#include
main()
{
	int n,i,a[100],j=0;
    scanf("%d",&n);
	while (n)    //当n为0时,也就是n/2为0时就取余完毕停止循环
	{
		a[j++]=n%2;    //将每次的余数放在数组a中
        n=n/2;
	}
	for (i=j-1;i>=0;i--)   //将数组逆序输出
		printf("%d",a[i]);
	printf("\n");
}
我们再来看看10进制转16进制的

#include 
main()
{
	int i,j=0,n,m,a[100]={0};
	char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
	scanf("%d",&n);
	while (n)
	{
		a[j++]=n%16;
		n=n/16;
	}
	for (i=j-1;i>=0;i--)
	{
		m=a[i];
		printf("%c",b[m]);  //m作为下标值对应到b数组
	}
}
用到了函数递归,不是太懂以后再看吧
#include
void binary(int, int);
int main()
{
    int N, R;
    while(scanf("%d %d", &N, &R)!=EOF)//输入数和进制
    {
        if(N==0)
            printf("%d",0);  //输入的是0直接输出0
        else if(N<0)        
        {
            printf("-");
            N=-N;
        }
        binary(N, R);//把N,R发送过去
        printf("\n");
    }
    return 0;
}

void binary(int n, int r)
{
    int m;
    if(n==0)
        return;
    else
    {
        binary(n/r, r);   // 将n/r返回给自身
        m=n%r;           //取余数
        if(m<10)          
            printf("%d", m);
        else
            printf("%c", 'A'+m-10);
    }
}


你可能感兴趣的:(将10进制数转换成任意进制数)