数据结构 第三章 栈和队列 练习题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;
}
相关推荐
江畔柳前堤7 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
wuyk5557 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
Doraemomo7 小时前
数据结构-环形链表
java·数据结构·链表
Forever Nore8 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考10 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX11 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面11 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号11 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽12 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI12 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研