C语言栈队列实现二-十/二-八进制转换

C语言栈队列实现二-十/二-八进制转换

2015-04-05 Lover雪儿

 1 //利用栈来求取二进制数的十进制与八进制的结果
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <math.h>
 5
 6 #define STACK_INIT_SIZE        20    //初始栈大小
 7 #define STACK_INCREMENT        10  //扩充栈时每次增加的内存
 8
 9 typedef char ElemType;            //栈中的数据类型
10 typedef struct {
11     ElemType *base;
12     ElemType *top;
13     int stackSize;
14 }sqStack;
15
16 //初始化栈
17 void init_stack(sqStack *s){
18     s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
19     if(!s->base)
20         exit(-1);
21     s->top = s->base;
22     s->stackSize = STACK_INIT_SIZE;
23 }
24 //入栈
25 void push(sqStack *s,ElemType e){
26     if(s->top - s->base >= s->stackSize){    //检测栈是否已满
27         //若是已满,则自动扩大栈空间
28         s->base = (ElemType *)realloc(s->base, (s->stackSize + STACK_INCREMENT)*sizeof(ElemType));
29         if(!s->base)
30             exit(-1);
31     }
32     *(s->top) = e;
33     s->top++;
34 }
35 //出栈
36 void pop(sqStack *s, ElemType *e){
37     if(s->top == s->base){
38         return ;
39     }
40     *e = *(--(s->top));
41 }
42 //求栈数据的个数,由于我们不会对其修改,故此处不需传指针
43 int  stack_len(sqStack s){
44     return (s.top - s.base); //返回数据的个数
45 }
46
47 int main(void){
48     ElemType c;
49     sqStack s;
50     int len = 0, i = 0, sum_10 = 0;
51     int j = 0, sum_8 = 0,tmp_8 = 0;
52
53     init_stack(&s);        //初始化栈
54     while(1){
55         printf("请输入二进制数,输入#符号表示结束,开头输入q/Q退出!\n");
56         scanf("%c",&c);    //按字符格式接收
57         if(c == ‘q‘ || c == ‘Q‘)
58             break;
59         while(c != ‘#‘){
60             push(&s,c);        //入栈
61             scanf("%c",&c);
62         }
63         getchar();        //将回车从当前缓冲区去除,用户按下回车后结束
64
65         len = stack_len(s);        //获取栈的当前容量
66         printf("栈的当前容量是: %d\n",len);
67
68         for(i = 0; i<len ; i++){
69             pop(&s, &c);  //传值使用引用方式
70             sum_10 =(int)( sum_10 + (c-48) * pow(2 , i));    //将ASCII转换为整形
71
72             tmp_8 =(int)( tmp_8 + (c-48) * pow(2 , i%3));    //将ASCII转换为整形
73
74             //printf("%d  %d\n",i%4,tmp_8);
75             if(i%3 == 2){
76                 sum_8 += (int)(tmp_8 * pow(10 , (j++)));
77                 tmp_8 = 0;
78             }
79         }
80         if(tmp_8 != 0){
81             sum_8 += (int)(tmp_8 * pow(10 , (j++)));
82             tmp_8 = 0;
83             j = 0;
84         }
85         printf("转换为十进制数是: %d 八进制数: 0%d\n",sum_10,sum_8);
86         sum_10 = 0;
87         sum_8 = 0;
88         j = 0;
89     }
90     return 0;
91 }

时间: 2025-01-06 00:01:54

C语言栈队列实现二-十/二-八进制转换的相关文章

“全栈2019”Java第二十二章:控制流程语句中的决策语句if-else

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第二十二章:控制流程语句中的决策语句if-else 下一章 "全栈2019"Java第二十三章:流程控制语句中决策语句switch上篇 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf

“全栈2019”Java第九十二章:外部类与内部类成员覆盖详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十二章:外部类与内部类成员覆盖详解 下一章 "全栈2019"Java第九十三章:内部类应用场景(迭代器设计模式) 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"

全栈JavaScript之路( 二十二 )IE 专有扩展——文档模式

ie8 引入了一个新的概念,"文档模式" ,页面的文档模式决定了,可以使用什么功能.也就是说,"文档模式",决定你了你可以使用哪个级别的css,在javascript可以使用哪些API, 以及如何对待文档类型(doctype). 两种方式修改: 通过 meta 标签修改,<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> 在服务器端修改, res.

《Programming in Lua 3》读书笔记(二十二)

日期:2014.8.6 PartⅣ The C API 26 Extending Your Application 使用Lua很重要的一点是用来做配置语言.配合主语言做一些功能的配置. 26.1 The Basics 有的时候程序需要配置一些功能信息,很多时候可能有许多别的方法比用lua做配置要更简单:如使用环境变量或者读取文件,读取文件涉及到文件的解析.如果使用Lua进行配置的话,相当于用lua文件替代了要读取的如csv.txt文件等. 使用Lua进行配置的时候,就需要使用Lua API去控制

「kuangbin带你飞」专题二十二 区间DP

layout: post title: 「kuangbin带你飞」专题二十二 区间DP author: "luowentaoaa" catalog: true tags: - kuangbin - 区间DP - 动态规划 传送门 B.LightOJ - 1422 Halloween Costumes 题意 按顺序参加舞会,参加一个舞会要穿一种衣服,可以在参加完一个舞会后套上另一个衣服再去参加舞会,也可以在参加一个舞会的时候把外面的衣服脱了,脱到合适的衣服,但是脱掉的衣服不能再穿,参加完

企业搜索引擎开发之连接器connector(二十二)

下面来分析线程执行类,线程池ThreadPool类 对该类的理解需要对java的线程池比较熟悉 该类引用了一个内部类 /** * The lazily constructed LazyThreadPool instance. */ private LazyThreadPool lazyThreadPool; 该成员实现了单例模式,即该对象只有一个实例,属于懒汉式单例模式,当实例化该成员时,启用了线程同步机制 /** * Shut down the {@link ThreadPool}. Afte

爪哇国新游记之二十二----算术表达式计算求值

代码: import java.util.ArrayList; import java.util.List; // 辅助类 class Item{ String value; boolean isNumber; public Item(String value,boolean isNumber){ this.value=value; this.isNumber=isNumber; } public Item(char c,boolean isNumber){ this.value=String.

22、数据结构笔记之二十二串相关概念

22.数据结构笔记之二十二串相关概念 本篇名言:"现实是此岸,理想是彼岸,中间隔着湍急的河流,行动则是架在河上的桥梁." 这篇开始我们学习串相关的数据结构. 欢迎转载,转载请标明出处: 1.  串的相关概念 1)串(string)是由零个或多个字符组成的有限序列,又名叫字符串. 2)串中含有的字符数据称为串的长度,零个字符的串称为空串(null string),它的长度为零. 3)子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串. 4)子串在主

【管理心得之二十二】小人物 仰视 大授权

场景再现====================Boss:小王,来我办公室一下.小王: 嗯Boss:近期总公司有会,需要到外地出差几日.我不在的这段期间里,公司大小事务你帮忙处理一下.          如果有什么难决定的事,第一时间电话.邮件联系我商定即可.小王:  明白.放心吧领导,绝不会让你失望的Boss:嗯,那就好,没事了. {小王走出办公室} 心中暗喜,"难道这就是传说中的授权,Boss不在的时候,我岂不是最高权力的行使者." ==================== 从场景