C语言实现10进制转变成2进制,8进制,16进制,字符‘0’-‘9’

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’实例:


额好像看着没什么效果哈

猜你喜欢

转载自blog.csdn.net/qq_20185737/article/details/106888894