顺序栈的应用,数制转换

数制转换

十进制数N和其他d进制数的转换时计算机实现计算的基本问题,其解决方法很多,其中一个简单的算法基于下列原理:
N = (N div d) X d + N mod d

实现代码

int D[6] = {'A', 'B', 'C', 'D', 'E', 'F'};

//数制转换
void conversion()
{
    int num;
    int d;
    printf("请输入一个非负十进制整数:");
    scanf("%d", &num);
    if(num <= 0) {
        printf("输入错误\n");
        return ;
    }
    printf("请输入进制:");
    scanf("%d", &d);

    SqStack S;
    Init_Stack(S);
    while(num)
    {
        Push(S, num % d);
        num = num / d;
    }
    int e;
    while(!isEmpty(S)){
        Pop(S, e);
        if(e > 9){
            printf("%c", D[e%10]);
            continue;
        }
        printf("%d ", e);
    }
    printf("\n");
}

由于超过10的进制是字母加数字的组合,这份代码之粗略解决了常用的16进制,其他10以上的进制没有解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值