用栈来实现二进制数转化为十进制数
程序员文章站
2022-07-15 08:21:36
...
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//栈的顺序存储结构
#define MAXSIZE 20
typedef char ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int top;
}SqStack;
//初始化栈顶指针为-1
void initSqStack(SqStack *S)
{
S->top=-1;
}
//进栈操作
int pushStack(SqStack *S,char e)
{
if(S->top==MAXSIZE-1)
return 0;
S->data[++S->top]=e;
return 1;
}
//出栈操作
int pop(SqStack *S,char *e)
{
if(S->top==-1)
return 0;
*e=S->data[S->top--];
return 1;
}
int main()
{
SqStack S;
char e;
initSqStack(&S);
int i=0,num=0;
scanf("%c",&e);
while(e!='#')
{
pushStack(&S,e);
scanf("%c",&e);
}
while(S.top!=-1)
{
pop(&S,&e); //依次取出栈顶元素
num=num+(e-48)*pow(2,i); //e-48即为字符’1‘和’2‘所对应的数值1和2
i++;
}
printf("%d",num);
return 0;
}
上一篇: 二进制转化为十进制
下一篇: Python 遍历数组的方法