实现方式一:
void to_2(int num)
{
if (!num)
{
return 0;
}
else
{
to_2(num / 2);
printf("%d ", num % 2);
}
}
void to_8(int num)
{
if (!num)
{
return 0;
}
else
{
to_8(num / 8);
printf("%0x ", num % 8);
}
}
void to_16(int num)
{
if (!num)
{
return 0;
}
else
{
to_16(num / 16);
printf("%x ", num % 16);
}
}
void main()
{
int num;
scanf("%d", &num);
printf("%d的二进制数:", num);
to_2(num);
printf("\n%d的八进制数:", num);
to_8(num);
printf("\n%d的十六进制数:", num);
to_16(num);
system("pause");
}
测试结果:
<img src="https://img-blog.csdn.net/20150807225141342?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
-----------------------------------------------------------------
实现方式二:
void to2str(int num, int i, char str2[33])
{
if (!num)
{
return 0;
}
else
{
to2str(num / 2, i + 1, str2);
str2[i] = (num % 2) + '0';
}
}
void to8str(int num, int i, char str8[33])
{
if (!num)
{
return 0;
}
else
{
to8str(num / 8, i + 1, str8);
str8[i] = (num % 8) + '0';
}
}
void to16str(int num, int i, char str16[33])
{
if (!num)
{
return 0;
}
else
{
to16str(num / 16, i + 1, str16);//位数向前
if (num % 16 < 10)
{
str16[i] = (num % 16) + '0';//字符整数的转换
}
else
{
//10 11 12 13 14 15
str16[i] = (num % 16) - 10 + 'A';
}
}
}
//十进制转二、八、十六进制
void main()
{
char str2[33] = { 0 };
char str8[33] = { 0 };
char str16[33] = { 0 };
printf("请输入要转换的十进制数:");
int num = 0;
scanf("%d", &num);
to2str(num, 0, str2);
_strrev(str2);//字符串逆转
printf("二进制数输出:%s\n", str2);
to8str(num, 0, str8);
_strrev(str8);
printf("八进制数输出:%s\n", str8);
to16str(num, 0, str16);
_strrev(str16);
printf("十六进制数输出:%s\n", str16);
system("pause");
}
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接