递归实现十进制到n进制转换(二到十六进制)
输入:4095,2
输出:111111111111
输入:-32760,16
输出:-7FF8
代码样例
#include <stdio.h>
void dectobin( int n,int m);
int main()
{
int n,m;
printf("Input the num, R: ");
scanf("%d,%d",&n,&m);
printf("Output:\n");
if(n<0)
{
n=-n;
printf("-");
dectobin(n,m);
}
else
{
dectobin(n,m);
}
printf("\n");
return 0;
}
void dectobin( int n,int m)
{
int r;
r=n%m;
if(n>=m)
dectobin(n/m,m);
if(r==0)
printf("0");
else if(r==1)
printf("1");
else if(r==2)
printf("2");
else if(r==3)
printf("3");
else if(r==4)
printf("4");
else if(r==5)
printf("5");
else if(r==6)
printf("6");
else if(r==7)
printf("7");
else if(r==8)
printf("8");
else if(r==9)
printf("9");
else if(r==10)
printf("A");
else if(r==11)
printf("B");
else if(r==12)
printf("C");
else if(r==13)
printf("D");
else if(r==14)
printf("E");
else if(r==15)
printf("F");
}
后面的 if else 也可以拿存储的字符数组和循环语句实现
#include <stdio.h>
void dectobin( int n,int m );
int main()
{
int n,m;
printf("Input the num, R: ");
scanf("%d,%d",&n,&m);
printf("Output:\n");
if(n<0)
{
n=-n;
printf("-");
dectobin(n,m );
}
else
{
dectobin(n,m );
}
printf("\n");
return 0;
}
void dectobin( int n,int m )
{
int r,i;
char str[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
r=n%m;
if(n>=m)
dectobin(n/m,m);
for(i=0;i<16;i++)
if(r==i)
printf("%c",str[i]);
}