数据结构 第三章 栈和队列 练习题3.2.1 数制转换 C语言代码

cpp 复制代码
#include <stdio.h>
#include <malloc.h>

/*
 * 数制转换
 * 把 一个数 转成任意进制
 * 本程序提供 2 8 16 任意进制转换,使用栈的特性
 */

// n输入的十进制整数 d转成的进制
int n, d;

// 菜单界面
void menu()
{
    printf("请输入一个十进制整数: \n");
    scanf("%d",&n);
    if (n < 0)
    {
        puts("目前仅支持正整数~");
        exit(1);
    }

    printf("======== 请选择转成N进制输出 ========\n");
    choose:
    printf("1. 转二进制\n");
    printf("2. 转八进制\n");
    printf("3. 转十六进\n");
    scanf("%d",&d);
    if(d == 1) d = 2;
    else if(d == 2)d = 8;
    else if(d == 3)d = 16;
    else
    {
        puts("---- 输入有误请重试 ----");
        goto choose;
    }
}

// 函数用于处理进制转换
void f(int x,int base) {
    int tt = 0; // tt = 0表示栈空
    int stk[100];

    while (x)
    {
        int t = x % base;
        x /= base;
        stk[++tt] = t;
    }

    while (tt)
    {
        int num = stk[tt--];
        // 处理十六进制 A ~ F
        if(num >= 10) printf("%c",(55 + num));
        else printf("%d",num);

        // 二进制换行
        if(d == 2 && tt % 4 == 0)printf(" ");
    }
}
int main()
{
    // 菜单
    menu();
    // 转换函数
    f(n,d);

    return 0;
}
相关推荐
WWZZ20259 分钟前
快速上手大模型:深度学习12(目标检测、语义分割、序列模型)
深度学习·算法·目标检测·计算机视觉·机器人·大模型·具身智能
feng_you_ying_li22 分钟前
Detailed explanation of being processing
c语言
Andrew_Ryan27 分钟前
llama.cpp Build Instructions
算法
玖剹33 分钟前
递归练习题(四)
c语言·数据结构·c++·算法·leetcode·深度优先·深度优先遍历
做人不要太理性33 分钟前
【Linux系统】线程的同步与互斥:核心原理、锁机制与实战代码
linux·服务器·算法
向阳逐梦43 分钟前
DC-DC Buck 电路(降压转换器)全面解析
人工智能·算法
Mz12211 小时前
day04 小美的区间删除
数据结构·算法
_OP_CHEN1 小时前
算法基础篇:(十九)吃透 BFS!从原理到实战,解锁宽度优先搜索的核心玩法
算法·蓝桥杯·bfs·宽度优先·算法竞赛·acm/icpc
小猪咪piggy1 小时前
【算法】day 20 leetcode 贪心
算法·leetcode·职场和发展
forestsea1 小时前
现代 JavaScript 加密技术详解:Web Crypto API 与常见算法实践
前端·javascript·算法