数据结构 第三章 栈和队列 练习题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;
}
相关推荐
2501_92495269几秒前
C++中的适配器模式
开发语言·c++·算法
良木生香5 分钟前
【C++初阶】:C++类和对象(中):类的默认成员函数---万字解说(最主要的四点)
c语言·开发语言·c++
智驱力人工智能6 分钟前
馆藏文物预防性保护依赖的图像分析技术 文物损害检测 文物破损检测 文物损害识别误报率优化方案 文物安全巡查AI系统案例 智慧文保AI监测
人工智能·算法·安全·yolo·边缘计算
wuguan_6 分钟前
Halcon中值滤波,均值滤波,高斯滤波
算法·halcon
☆5667 分钟前
C++安全编程指南
开发语言·c++·算法
tobias.b8 分钟前
机器学习 超清晰通俗讲解 + 核心算法全解(深度+易懂版)
人工智能·算法·机器学习
budingxiaomoli17 分钟前
优选算法--bfs解决FloodFill问题
算法·宽度优先
超级大只老咪23 分钟前
贪心算法对应策略
算法·贪心算法
im_AMBER28 分钟前
Leetcode 145 回文数 | 加一
数据结构·算法·leetcode
HLC++29 分钟前
数据结构--树
c语言·开发语言·数据结构