十以内的进制转换(递归实现)

#include<stdio.h>
#define M 10 //M为转换之前的进制
#define N 2 //N为转换之后的进制

int trans(int n) {
   
    if (n < N && n < M)
        return n;
    else
        return n % N + M * trans(n / N);
}

int main(void) {
   
    int n;
    printf("请输入一个M进制的数n:");
    scanf("%d", &n);
    printf("将M进制的数n转化为N进制后的数为%d", trans(n));
    
    return 0;
}

注意:本程序只能实现10以内的进制的任意转换,若要实现十六进制与其他进制的转换,可以先转换为二进制,利用每四个二进制数转换为一个十六进制数进行转换(若二进制的数位不能被4整除,则数位的左边用0补齐)