二进制/八进制转换器

二进制/八进制转换器题目要求 编写一个程序 要求从终端输入一串 0 1 表示的二进制数 输出它的八进制表示形式 二进制转八进制的过程将栈 A 的 10 转换为 2 存放到栈 B 中 主要考点是练习动态申请内存空间 include stdio h in

欢迎大家来到IT世界,在知识的湖畔探索吧!

题目要求:

编写一个程序,要求从终端输入一串0/1表示的二进制数,输出它的八进制表示形式。

二进制/八进制转换器

二进制转八进制的过程

将栈A的10转换为2,存放到栈B中;

主要考点是练习动态申请内存空间;

#include "stdio.h" #include "math.h" #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10 typedef char ElemType; typedef struct{ ElemType *base; ElemType *top; int stacksize; }sqStack; /*初始化栈*/ void initStack(sqStack *s) { /*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/ s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); if(!s->base) exit(0); /*分配空间失败*/ s->top = s->base; /*最开始,栈顶就是栈底*/ s->stacksize = STACK_INIT_SIZE; /*最大容量为STACK_INIT_SIZE */ } /*入栈操作,将e压入栈中*/ 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 = s->base + s->stacksize; s->stacksize = s->stacksize + STACKINCREMENT; /*设置栈的最大容量*/ } *(s->top) = e; /*放入数据*/ s->top++; } /*出栈操作,用e将栈顶元素返回*/ void Pop(sqStack *s , ElemType *e){ if(s->top == s->base) return; *e = *--(s->top); } /*计算栈s的当前长度*/ int StackLen(sqStack s){ return (s.top - s.base) ; } main() { ElemType c; sqStack s1; sqStack s2; int len,i,j,sum = 0; initStack(&s1); /*创建一个栈s1,用来存放二进制字符串*/ printf("Please input a binary number and type # for end\n"); /*输入0/1字符表示的二进制数,以#结束*/ scanf("%c",&c); while(c!='#') { if(c=='0' || c=='1') Push(&s1,c); scanf("%c",&c); } initStack(&s2); /*创建一个栈s2,用来存放八进制字符串*/ len = StackLen(s1); /*得到栈中的元素个数,即二进制数的长度*/ for(i=0;i<len;i=i+3){ for(j=0;j<3;j++){ Pop(&s1,&c); /*取出栈顶元素*/ sum = sum + (c-48) * pow(2,j); /*转换为八进制数*/ if(s1.base == s1.top) break; } Push(&s2,sum+48) ; /*将八进制数以字符形式压入栈中*/ sum = 0; } while(s2.base != s2.top ){ /*输出八进制栈的内容*/ Pop(&s2,&c); printf("%c",c); } getche(); }

欢迎大家来到IT世界,在知识的湖畔探索吧!

运行结果:

二进制/八进制转换器

运行结果

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/80796.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信