//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. beego里面自定义配置文件

    beego编译好的exe通过全路径调用会crash,看了半天,发现是解析不到配置文件,研究了下 发现beego自定义配置文件以后,需要手工parse,我表示,以为是自动化的,没想到是半自动化的…… 追 ...

  2. SQL Server 格式化时间 之 format函数

    select format(getdate(),'yyyy-MM-dd HH:mm:ss'); 要注意 yyyy-MM-dd这里MM是大写的, HH:mm:ss这里HH是大写的,mm是小写的,大小写意 ...

  3. C#应用程序单进程检测

    以下程序经过VS2010测试通过: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Ma ...

  4. UVA116 单向 DSP(多段图最短路)

    单向 DSP [题目链接]单向 DSP [题目类型]dp &题解: 紫书P271 这块的字典序排序我觉得挺厉害的,每次都把那3步sort一下,之后if (v< d[i][j]) 这块的小 ...

  5. HDU 2897 邂逅明下(巴什博奕)

    题意: 每行有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输.对于每一行 ...

  6. C++程序设计原理与实践

    std_lib_facilities.h和VS下创建C++程序方法:下载 目录: 001. Hello,World!

  7. JAVA 子父类的特点

    一.变量(属性)    this 代表当前对象的引用 this.变量 首先在本类中找所需要的这个变量,如果没有找到再去父类中找    super 用于访问当前对象的父类成员 super.变量 直接在父 ...

  8. Windows下编译使用Aliyun OSS PHP SDK

    摘要: WIN环境下搭建Aliyun OSS PHP SDK编译运行环境.从PHP的安装逐步完成,SDK的编译运行.即使没有任何PHP基础,也能顺利完成. 安装环境:Win7 64 + PHP 5.6 ...

  9. Maven详解之仓库------本地仓库、远程仓库

    在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方) 任何的 ...

  10. Java多线程之新类库中的构件CyclicBarrier

    1.类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 Cycl ...