数据结构 第三章 栈和队列 练习题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;
}
相关推荐
mochensage1 小时前
C++信息学竞赛中常用函数的一般用法
java·c++·算法
chengooooooo1 小时前
leetcode Top100 238. 除自身以外数组的乘积|数组系列
算法·leetcode
GUIQU.1 小时前
【每日一题 | 2025年6.2 ~ 6.8】第16届蓝桥杯部分偏简单题
算法·蓝桥杯·每日一题
weixin_527550402 小时前
初级程序员入门指南
javascript·python·算法
乄夜2 小时前
嵌入式面试高频(5)!!!C++语言(嵌入式八股文,嵌入式面经)
c语言·c++·单片机·嵌入式硬件·物联网·面试·职场和发展
思捻如枫4 小时前
C++数据结构和算法代码模板总结——算法部分
数据结构·c++
嘉陵妹妹4 小时前
深度优先算法学习
学习·算法·深度优先
GalaxyPokemon4 小时前
LeetCode - 53. 最大子数组和
算法·leetcode·职场和发展
小猫咪怎么会有坏心思呢4 小时前
华为OD机考 - 水仙花数 Ⅰ(2025B卷 100分)
数据结构·链表·华为od
乖乖是干饭王5 小时前
Linux系统编程中的_GNU_SOURCE宏
linux·运维·c语言·学习·gnu