#include <stdio.h>
#include <stdlib.h>
#include <math.h>#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10typedef char ElemType; //每输入一个位存入一个字符
typedef struct
{ElemType *base;ElemType *top;int stackSize;
}sqStack;void InitStack(sqStack *s)
{s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));if ( !s->base )exit (0);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)exit (0);}*(s->top)=e;s->top++;
}void Pop(sqStack *s, ElemType *e)
{if(s->top == s->base)return;*e=*--(s->top);
}int StackLen(sqStack s) //不会进行修改,直接传数据进来就行
{return (s.top - s.base); //指针相减,不是地址相减,而是指向元素的值//s是结构,使用点
}int main()
{ElemType c, d;sqStack s, n;int len, len_n, i, j, sum=0, temp=0;InitStack(&s);InitStack(&n);printf("请输入二进制数,输入#符号表示结束!\n");scanf("%c", &c); // 以字符的形式while( c != '#') // 从最高位开始压栈{Push(&s, c);scanf("%c", &c);}getchar(); // 把回车'\n'从缓冲区去掉len=StackLen(s);printf("栈的当前容量是:%d\n", len);for(i=0; i<len; i++){Pop(&s, &c);if((i+1)%3 != 0){sum+=(c-'0')*pow(2, i%3);}else{sum+=(c-'0')*pow(2, i%3);d=sum;Push(&n, d);sum=0;}}if(len%3 != 0){d=sum;Push(&n, d);}len_n=StackLen(n);printf("新栈的当前容量是:%d\n", len_n);printf("转换为八进制数为:");for(j=0; j<len_n; j++){Pop(&n, &d);printf("%o", d);}printf("\n");return 0;
}

二进制数转八进制数(参考XJY)相关推荐

  1. 计算机二进制基础列式,计算机基础;十进制数100对应的二进制数、八进制数和十六进制数分别是...

    中计数采用了多种记数制,比如:十进制,六十进制(六十秒为一分,六十分为一小时,即基数为60,运算规则是逢六十进一),--.在计算机中常用到十进制数.二进制数.八进制数.十六进制数等,下面就这几种在计算 ...

  2. C语言中的二进制数、八进制数和十六进制数

    C语言中的整数除了可以使用十进制,还可以使用二进制.八进制和十六进制. 二进制数.八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式.但是,表示一个二进制.八 ...

  3. 用栈来实现将一个十进制数转换成等值的二进制数或者八进制数

    栈的应用 栈的一个典型应用是将10进制数转换成等值的二进制数,或者八进制数,由于将十进制数转换成二进制数或者八进制数的时候符合栈的"后进先出"的特性,因为其算法思路就是不断取余然后 ...

  4. c语言能对16进制数比较大小,C语言中的二进制数、八进制数和十六进制数

    C语言中的整数除了可以使用十进制,还可以使用二进制.八进制和十六进制. 二进制数.八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式.但是,表示一个二进制.八 ...

  5. 输出一个整数的二进制数、八进制数、十六进制数,java实现

    需求:键盘录入一个整数,输出这个整数的二进制数.八进制数.十六进制数. 分析: 1.十进制转二进制: 十进制数除以2取余,倒着输出.把取得的余数放在数组中,从后往前遍历数组 2.十进制转八进制: 十进 ...

  6. c语言8进制数与16进制数,C语言中的二进制数、八进制数和十六进制数

    C语言中的整数除了可以使用十进制,还可以使用二进制.八进制和十六进制. 二进制数.八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式.但是,表示一个二进制.八 ...

  7. 第三章 变量和数据类型_C语言中的二进制数、八进制数和十六进制数的输入和输出

    二进制数.八进制数和十六进制数的输入 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式.但是,表示一个二进制.八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特 ...

  8. 二进制数、八进制数、十六进制数与…

    整数在内存中是以补码的形式存放的.(符号位1表示负,0表示正) 正数的补码和源码相同:负数的补码=该数绝对值的二进制数-取反-加1: 一个有符号的int型变量(当时2个字节时)取值范围:-2∧15~( ...

  9. 二进制数、八进制数、十六进制数与十进制数之间的相互转化

    十进制数转化为其它进制 1.十进制转化为二进制数 十进制数15 上图中箭头的方向即为二进制数中从低位到高位(从右往左)的顺序, 二进制数为:0000 0000 0000 0000 0000 0000 ...

  10. java 学习 输出一个整数的二进制数、八进制数、十六进制数。

    使用简单的for循环进行 一个十进制数 转换为二进制数.八进制数.十六进制数. (2)十进制转二进制 十进制整数转二进制数:"除以2取余,逆序排列"(除二取余法) (2)十进制转八 ...

最新文章

  1. 【牛腩新闻发布系统】开发前的准备01
  2. 中国最大的python社区-python求最大数
  3. 什么是Hexo?妈妈再也不用担心我的网页编辑能力了
  4. Gym 100090D Insomnia
  5. QT实现图像处理-傅立叶变换、傅立叶反变换、平滑、锐化与模板匹配
  6. cocos2dx-js 截屏 (原生 + H5)
  7. 响应式微服务架构-分布式系统设计原则
  8. USB协议介绍二 传输
  9. 控制理论与控制工程算计算机相关专业吗,控制理论与控制工程专业介绍
  10. 【项目简介】LinkWeChat:基于企业微信开源系统
  11. 树莓派搭建transmission下载机
  12. 一些比较好的国外IT网站
  13. 【手工儿童】}DIY冬南瓜小兔子
  14. 蓝桥web模拟赛:时间管理大师
  15. 15年的MacBookPro如何升级系统到10.15
  16. js正则表达式获取后缀名_jquery如何获取文件后缀
  17. ftpclient查看服务器文件,使用Apache FtpClient在FTP服务器中计算文件校验和
  18. qemu 内核调试环境搭建
  19. A7799之STM32程序——STM32测试高精度ADC篇(二)
  20. 探索Android中的Parcel机制(下)

热门文章

  1. CefSharp 自定义缓存目录
  2. IDEA——最全配置
  3. Java 下载远端图片到本地
  4. 模拟下线程池队列无界或线程无限的OOM情况
  5. Unity动画系统学习笔记(一)动画剪辑与状态机
  6. Carnac源码下载编译(win10,VS2022)
  7. ctf图片隐写中改变图片高和宽
  8. 2020年全国天梯赛赛前个人专题强化赛---C(最短路)
  9. 视觉SLAM十四讲CH6代码解析及课后习题详解
  10. vuex(入门软文)