讽957 2022-11-10 15:40 采纳率: 50%
浏览 40
已结题

将二进制转化为十六进制

问题遇到的现象和发生背景

在上述程序基础上,实现将二进制转化为十六进制功能

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 30
#define ElementType int
typedef int Position;
typedef struct SNode *PtrToSNode;
struct SNode
{
    ElementType *Data; //存储元素的数组
    Position Top;      //栈顶指针
    int MaxSize;       //堆栈最大容量
};
typedef PtrToSNode Stack;
//顺序栈的创建
Stack CreateStack(int MaxSize)
{
    Stack S = (Stack)malloc(sizeof(struct SNode));
    S->Data = (ElementType *)malloc(Maxsize * sizeof(ElementType));
    S->Top = -1;
    S->MaxSize = MaxSize;
    return S;
}
//释放栈
void Destory_Stack(Stack *S)
{
    if (*S)
        free(*S);
    *S = NULL;
    return;
}

//判断栈是否已满
int IsFull(Stack S)
{
    if (S->Top == S->MaxSize - 1)
        return 1; //表示堆栈已满
    else
        return 0; //表示堆栈未满
}
//判断栈是否为空
int IsEmpty(Stack S)
{
    if (S->Top == -1)
        return 1; //表示空
    else
        return 0; //表示非空
}
//顺序栈入栈
int Push(Stack S, ElementType X)
{
    if (IsFull(S))
    {
        printf("堆栈已满,不能入栈");
        return 0;
    }
    else
    { //入栈
        S->Top++;
        S->Data[S->Top] = X;
        return 1;
    }
}
//顺序栈出栈
ElementType Pop(Stack S)
{
    if (IsEmpty(S))
    {
        printf("堆栈空,不能删除元素");
        return 0;
    }
    else
    { //出栈
        return (S->Data[(S->Top)--]);
    }
}
//数制转换
int Conversion(int Num, int Radix)
{
    Stack S;
    int tmp;
    if (Radix == 0)
    {
        printf("基数不能为0\n");
        return 0;
    }
    S = CreateStack(30); //定义堆栈最大值
    if (!S)
    {
        printf("栈初始化失败\n");
        return 0;
    }
    while (Num)
    {
        Push(S, Num % Radix); //余数入栈
        Num = Num / Radix;    //商作为被除数
    }
    while (!IsEmpty(S))
    {
        tmp = Pop(S);
        printf("%d", tmp);
    }
    printf("\n");
    Destory_Stack(&S);
}
//主函数实现
int main()
{
    int N, R;
    printf("请输入一个十进制数:\n");
    scanf("%d", &N);
    printf("请输入转换后的数制:\n");
    scanf("%d", &R);
    Conversion(N, R);
    return 0;
}

我的解答思路和尝试过的方法

十进制先转换为二进制再转换为十六进制

我想要达到的结果

在上述程序基础上,实现将二进制转化为十六进制功能

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-14 13:25
    关注

    二进制转化为十六进制,每四位二进制数组成一位十六进制数,按这个规律就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月10日

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献