美文网首页
C语言实现进制转化

C语言实现进制转化

作者: 弗罗伊德 | 来源:发表于2020-03-09 13:59 被阅读0次

在前面的一篇文章中,蓝桥杯2017真题——日期问题,涉及到了一个非常基础的问题:禁止的转化,为了强化对于进制转化的理解,专门对于进制转化问题做了一次编程的实现。首先了解进制转化的机制:
十进制转N进制:除N取余倒计
N进制转十进制:依次乘N的n-1次方再相加
如:二进制10101转十进制:12^0 + 02^1 + 12^2 + 02^3 + 1*2^4 = 21

#include<stdio.h>
#include<math.h>

void TenToN(int num,int n)//十进制转其他:除n取余倒排
{
    int result1[32], i=0;
    while (num>0)
    {
        result1[i] = num % n;
        num /= n;
        i++;
    }
    for (i--; i >= 0; i--)
    {
        printf("%d", result1[i]);
    }
}
void NToTen(int num,int n)//其他转十进制:乘权相加
{
    int result2=0, i = 0, m;
    while (num!=0)
    {
        m = num % 10;
        num /= 10;
        result2 += m * pow(n, i);
        i++;
    }
    printf("%d", result2);
}
int main()
{
    int num, n,sw;
    printf("请输入你要转化的初始进制数\n");
    scanf("%d", &sw);
    if (sw==10)//十进制转其他
    {
        printf("请输入数据和目标进制数\n");
        scanf("%d%d", &num, &n);
        TenToN(num, n);
    }
    else if (sw==2||sw==8||sw==16)//其他转十进制
    {
        printf("请输入数据\n");
        scanf("%d", &num);
        NToTen(num, sw);
    }
    else
    {
        printf("输入异常!");
    }
    return 0;
}

相关文章

网友评论

      本文标题:C语言实现进制转化

      本文链接:https://www.haomeiwen.com/subject/grqpdhtx.html