C语言用栈实现十进制转换为二进制的方法示例

 更新时间:2017年06月05日 14:06:29   作者:PHP开发学习门户  
这篇文章主要介绍了C语言用栈实现十进制转换为二进制的方法,结合实例形式分析了C语言栈的定义及进制转换使用技巧,需要的朋友可以参考下

本文实例讲述了C语言用栈实现十进制转换为二进制的方法。分享给大家供大家参考,具体如下:

#include<stdio.h>
#include<malloc.h>
#include<math.h>
#include<string.h>
#include "process.h"
#define SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef struct
{
  int a;
} SElemType;
typedef struct
{
  SElemType *base;
  SElemType *top;
  int stacksize;
} SqStack;
SqStack S; //定义全局变量
Status InitStack(SqStack *S)
{
  S->base=(SElemType *)malloc(SIZE*sizeof(SElemType));
  if(!S->base) exit(OVERFLOW);
  S->top=S->base;
  S->stacksize=SIZE;
  return OK;
}
Status Push(SqStack *S,SElemType e)
{
  if(S->top-S->base>=S->stacksize)
  {
    S->base=(SElemType *)malloc((S->stacksize+STACKINCREMENT)*sizeof(SElemType));
    if(!S->base) exit(OVERFLOW);
    S->top=S->base+S->stacksize;
    S->stacksize+=STACKINCREMENT;
  }
  *S->top++=e;
  //printf("%dwww\n",*--S->top);
  return OK;
}
Status Stackempty(SqStack *S)
{
  if(S->top==S->base)
    return TRUE;
  else
    return FALSE;
}
Status Pop(SqStack *S,SElemType *e)
{
  if(S->top==S->base) return ERROR;
  *e=*--S->top;
  return OK;
}
Status DtoBTrans(int N,SqStack *S)
{
  SElemType e;
  while(N)
  {
    e.a=N%2;
    Push(S,e);
    N=N/2;
  }
  while(!Stackempty(S))
  {
    Pop(S,&e);
    printf("%d",e);
  }
  return OK;
}
void main()
{
  int x;
  InitStack(&S);
  printf("请输入十进制数:");
  scanf("%d",&x);
  DtoBTrans(x,&S);
}

运行结果:

希望本文所述对大家C语言程序设计有所帮助。

相关文章

  • C++中输出十六进制形式的字符串

    C++中输出十六进制形式的字符串

    这篇文章主要给大家介绍了C++中输出十六进制形式的字符串,文中给出了详细的介绍,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • C语言实现字符串拼接和拷贝

    C语言实现字符串拼接和拷贝

    这篇文章主要为大家详细介绍了C语言实现字符串拼接和拷贝,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • c++中拷贝构造函数的参数类型必须是引用

    c++中拷贝构造函数的参数类型必须是引用

    如果拷贝构造函数中的参数不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造函数,从而造成无穷递归地调用拷贝构造函数。因此拷贝构造函数的参数必须是一个引用
    2013-07-07
  • 用C语言求解第N项斐波那契数列问题

    用C语言求解第N项斐波那契数列问题

    这篇文章主要介绍了用C语言求解第N项斐波那契数列问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C语言深入探究选择排序与基数排序使用案例讲解

    C语言深入探究选择排序与基数排序使用案例讲解

    算法中排序是十分重要的,而每一个学习计算机的都会在初期的时候接触到这种排序,下面这篇文章主要给大家介绍了关于c语言选择排序与基数排序使用的相关资料,需要的朋友可以参考下
    2022-05-05
  • C++函数的嵌套调用和递归调用学习教程

    C++函数的嵌套调用和递归调用学习教程

    这篇文章主要介绍了C++函数的嵌套调用和递归调用学习教程,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • DSP中浮点转定点运算--定点数模拟浮点数运算及常见的策略

    DSP中浮点转定点运算--定点数模拟浮点数运算及常见的策略

    本文主要讲解DSP中定点数模拟浮点数运算及常见的策略,具有参考价值,需要的朋友可以参考一下。
    2016-06-06
  • C语言使用函数实现字符串部分复制问题

    C语言使用函数实现字符串部分复制问题

    这篇文章主要介绍了C语言使用函数实现字符串部分复制问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Opencv分水岭算法学习

    Opencv分水岭算法学习

    这篇文章主要为大家详细介绍了Opencv分水岭算法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言二进制思想以及数据的存储

    C语言二进制思想以及数据的存储

    本文主要介绍了C语言的二进制思想以及数据的存储,这里对二进制和数据存储做了详细的说明,对开始学习C语言的同学比较有参考价值
    2016-07-07

最新评论