//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 ;
}

最新文章

  1. java中文乱码解决之道(八)-----解决URL中文乱码问题
  2. sdut 2445 小学数学
  3. Scala的Actor模式 &amp; Akka框架
  4. BZOJ_1022_[SHOI2008]_小约翰的游戏John_(博弈论_反Nim游戏)
  5. 我学的是设计模式的视频教程——装饰图案,装饰图案VS代理模式
  6. 关于使用lazytag的线段树两种查询方式的比较研究
  7. 一个普通的 Zepto 源码分析(二) - ajax 模块
  8. CUDA编程模型
  9. halcon+WinForm显示rgb图并灰度化
  10. tushare 开源数据包的使用
  11. css图片根据div宽高比例自适应
  12. LoadRunner进行参数化的九种方式取值和连接数据库取值
  13. android Unable to inflate view tag without class attribute
  14. C++ 类占用空间计算方式
  15. Python进阶 学习笔记(三)
  16. BZOJ4951 Wf2017Money for Nothing(决策单调性)
  17. yii2 自动登录解读
  18. spark history server
  19. File类中的list()和listFiles()方法
  20. CF E2 - Array and Segments (Hard version) (线段树)

热门文章

  1. 纯js上传控件——fineuploader
  2. 进程间通信IPC之--共享内存
  3. RMAN_Oracle RMAN的常用Command命令
  4. BIP_Oracle Erp标准银行接口XML文件(案例)(待整理)
  5. 发布在IIS上的Web程序,调用服务器的COM组件
  6. 查询oracle中所有用户信息
  7. Laravel 部署安装到虚拟主机的方法(折腾了一周,终于成功部署,原来是虚拟机不加载.env,谢谢莫回首http://lxl520.com/index.php/archives/88/!)
  8. js手机短信按钮倒计时
  9. git config(转载)
  10. 不可变集合 Immutable Collections