C语言实现10进制转变成2进制,8进制,16进制,字符‘0’-‘9’
思路:
依次取余
选择用递归来实现先输出高位后输出低位
1.转二进制实现:
void fun(int n)
{
if(n/2) //如果n/2=0,就往回返,=1,说明还没有除尽,继续调用自己
fun(n/2);
printf("%d",n%2);
}
int main()
{
int n;
scanf("%d",&n);
fun(n);
return 0;
}
转二进制实例:
转8,16进制思路:
标题算法和转2进制算法一样,对8,16取余就行,16进制需要每次判断余数是否大于9,’A’-‘F’
转8,16进制实现:
转16进制
void fun(int n)
{
if(n/16)
fun(n/16);
if(n%16>9)
n%16>9?printf("%c",n%16+55):printf("%d",n%16);
//判断是否大于9,大于加55输出对应的A-F
}
int main()
{
int n;
scanf("%d",&n);
fun(n);
return 0;
}
转16进制实例:
2.转字符‘0’-‘9’:
例:369转“369”
思路:
对10取余获得它的每一位,加48得到它的ASCLL码
转字符‘0’-‘9’实现:
void fun(int n)
{
if(n/10)
fun(n/10);
printf("%c",n%10+48); //获取个位+48得到ASCLL码输出字符
}
int main()
{
int n;
scanf("%d",&n);
fun(n);
return 0;
}
转字符‘0’-‘9’实例:
额好像看着没什么效果哈