//c语言描述  将2进制转化为10进制
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define STACK_INIT_SIZE 20
#define //栈满后再分配 typedef char ElemType;
typedef struct
{
ElemType *base; //栈底
ElemType *top; //栈底
int stackSize; // 栈的容量
}sqStack; void InitStack (sqStack *s) //初始化栈
{
s -> base = (ElemType*) malloc(STACK_INIT_SIZE);
if(! s-> base)
{
printf("分配空间失败");
exit();
}
s->top=s->base ;
s->stackSize = STACK_INIT_SIZE;
} void Push (sqStack *s, ElemType e) //进栈
{
if(s->top - s->base >= s->stackSize)
{
s->base =(ElemType*) realloc(s->base,(s->stackSize + STACKINCREMENT) * sizeof(ElemType));//分配空间
if(! s-> base)
{
printf("分配空间失败");
exit();
}
}
*(s->top) = e; //先赋值
s->top++; //指针在+1
} void Pop(sqStack * s,ElemType *e) //出栈
{
if(s->top == s->base )
{
printf("栈为空,没法出栈");
return;
}
*e = *--(s->top); //首先把s->top的元素赋值给e 再将地址--
} int StackLen (sqStack s) //返回栈有多少个元素
{
return ( s.top - s.base); // 实质是地址相减 除以ElemType
} int main()
{
ElemType c; //声明一个字符c
sqStack s; //声明一个结构体s int len,i,sum=;
InitStack(&s); //初始化栈
printf("请输入二进制数,输入#结束!\n");
scanf("%c",&c);
while( c != '#')
{
Push (&s,c);
scanf ("%c",&c);
}
getchar(); //接收回车键
len =StackLen(s);
printf("栈的当容量:%d\n",len);
for(i=; i<len ; i++)
{
Pop(&s,&c);
sum = sum + (c-) * pow(,i);
}
printf("转化为十进制数为:%d \n",sum); return ;
}

c语言将2进制数转化为10进制数(栈的初始化,进栈,出栈)的更多相关文章

  1. C语言实现链栈的初始化&进栈&出栈&读取栈顶元素

    /*链表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typede ...

  2. C语言实现顺序栈的初始化&进栈&出栈&读取栈顶元素

    /*顺序表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //设栈中元素个数为50 ...

  3. c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)

    /* c++描述将2进制数转化成10进制数 问题,1.初始化栈后,用new,不知道delete是否要再写一个函数释放内存, 还是在哪里可以加上delete 2.如果栈满了,我要分配多点空间,我想的办法 ...

  4. C#中2、8、16进制 有符号转换10进制正负数

    曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转1 ...

  5. python进制转化函数,10进制字符串互转,16进制字符串互转

    来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...

  6. 十进制和n进制的转换(10进制转换为36进制)

    答案如下: void Convert() { map<int ,string> maps; maps[0]="0"; maps[1]="1"; ma ...

  7. C语言 栈的初始化,入栈,出栈,判断栈是否为空,清空栈等函数

    #include <stdio.h>#include <stdlib.h> typedef struct Node{ int data ; struct Node * pNex ...

  8. C语言实现字符串中(10进制和16进制)转成十进制数

    如何将字符串中的10进制数和16进制数提取出来,看以下代码: #include <stdio.h> typedef char TUINT8 ; typedef int TUINT32; T ...

  9. Java 将字节数组转化为16进制的多种方案

    很多时候我们需要将字节数组转化为16进制字符串来保存,尤其在很多加密的场景中,例如保存密钥等.因为字节数组,除了写入文件或者以二进制的形式写入数据库以外,无法直接转为为字符串,因为字符串结尾有\0,当 ...

随机推荐

  1. android学习笔记17——对话框(PopupWindow)

    PopupWindow ==> PopupWindow可创建类似对话框的窗口,使用其创建对话框窗口的操作步骤: 1.调用PopupWindow构造器构造PopupWindow对象: 2.调用Po ...

  2. android如何播放资源文件夹raw中的视频

    转自这里 videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/&qu ...

  3. WINDOWS黑客基础(3):注入代码

    有使用过外挂的朋友应该知道,我们在玩游戏的时候,有很多辅助功能给你使用,比如吃药,使用物品等功能,这个时候我们就是使用注入代码的技术,简单的来将就是我们让另外一个进程去执行我们想让它执行的代码,这中间 ...

  4. mongdb3.0用户验证问题

    1.  用户验证方式更改: Mongodb2.6的默认用户验证方式是:MONGODB-CR Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1 因为新的验证方式在spring和java中 ...

  5. 【转】SQLServer XML类型

    SQL Server从2005起开始支持xml类型,这个数据类型对于后期的改变非常有用.一对多的关系在后期变成了多对多的关系,XML类型就是一个不错的选择. 1.创建测试数据 创建表 --创建表,包含 ...

  6. Css3_写出小广播样子

    /* create an arrow that points up */ div.arrow-up { width:0px; height:0px; border-left:5px solid tra ...

  7. (WPF, MVVM) Textbox Binding

    参考:http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger(v=vs.110).aspx Te ...

  8. CMake使用教程

    转自 RichardXG 原文 CMake使用教程 CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 通过编写CMak ...

  9. nyoj 284 坦克大战 (优先队列)

    题目链接:http://acm.nyist.net/JudgeOnline/status.php?pid=284 特殊数据: 5 5 BBEEY EEERB SSERB SSERB SSETB 7 非 ...

  10. 论文他引次数及ESI高被引论文查询方法

    https://yunpan.cn/cS67Z9UEDvc2b 访问密码 f078