C语言 十进制转任意进制N(除N取余,逆序排列) 使用递归

#include<stdio.h>
void decimalToAny(int n,int d)//10进制转换成任意进制
{
    if(n==0)
        return ;
    else
    {
        decimalToAny(n/d,d);
        if(d>=10)//如果是10进制以上
        {
            if(n%d>=10)
            {
                 printf("%c",(char)((n%d-10)+'A'));
            }
            else//如果余数小于10,则直接输出
                printf("%d",n%d);
        }
        //如果进制小于10,不会有字母的问题
        else
            printf("%d",n%d);
    }
}

int main()
{
    int n,d;
    char again='y';
    while(again=='y'||again=='Y')
    {

        printf("请输入十进制数:");
        scanf("%d",&n);
        printf("请输入要转换成几进制:");
        scanf("%d",&d);
        if(n==0)
        {
            printf("转换完成:0");
            continue;
        }
        printf("转换完成:");
        decimalToAny(n,d);
        printf("\n");
        printf("---------继续[y/n]?:");
        scanf("%s",&again);
    }
    return 0;
}

测试:

请输入十进制数:10
请输入要转换成几进制:2
转换完成:1010
---------继续[y/n]?:y
请输入十进制数:12
请输入要转换成几进制:6
转换完成:20
---------继续[y/n]?:y
请输入十进制数:15
请输入要转换成几进制:16
转换完成:F
---------继续[y/n]?:y
请输入十进制数:16
请输入要转换成几进制:8
转换完成:20
---------继续[y/n]?:n
    原文作者:进制转换
    原文地址: https://blog.csdn.net/qq_21808961/article/details/78176815
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞