数据结构 第三章 栈和队列 练习题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;
}
相关推荐
YouQian77233 分钟前
(AC)Playlist
算法
算法_小学生1 小时前
决策树(Decision Tree)完整解析:原理 + 数学推导 + 剪枝 + 实战
算法·决策树·剪枝
岁忧1 小时前
(LeetCode 面试经典 150 题 ) 155. 最小栈 (栈)
java·c++·算法·leetcode·面试·go
yanchao_hu2 小时前
数据结构基础内容(第二篇:线性结构)
数据结构·windows
明明如月学长3 小时前
什么你不知道 Cherry Studio 有快捷助手?
算法
拳里剑气3 小时前
C语言:顺序表(上)
c语言·开发语言·数据结构·学习方法
Vegetable_Dragon3 小时前
数论1.01
算法
Star在努力3 小时前
15-C语言:第15天笔记
c语言·笔记·算法
我有一计3333 小时前
【算法笔记】5.LeetCode-Hot100-矩阵专项
人工智能·算法·程序员
行然梦实4 小时前
KnEA(Knee-point-driven Evolutionary Algorithm)简介
人工智能·算法·机器学习