#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 20
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType data[MAXSIZE];
int top;
}Sqstack;
Status InitSqstack(Sqstack * S)
{
S->top=-1;
return OK;
}
Status Push(Sqstack * S,SElemType e)
{
if(S->top==MAXSIZE-1)
{
return ERROR;
}
S->top++;
S->data[S->top]=e;
return OK;
}
Status Pop(Sqstack * S,SElemType * e)
{
if(S->top==-1)
{
return ERROR;
}
*e=S->data[S->top];
S->top--;
return OK;
}
Status Create(Sqstack * S,int n)
{
SElemType Number;
for(int i=0;i<n;i++)
{
scanf("%d",&Number);
Push(S,Number);
}
return OK;
}
Status Change(Sqstack * S,int n)
{
SElemType Number,result;
SElemType Sum=0;
for(int i=0;i<n;i++)
{
Pop(S,&Number);
if(i==0)
{
result=Number*1;
}
else
{
for(int j=0;j<i;j++)
Number=Number*2;
result=Number;
}
Sum=result+Sum;
}
return Sum;
}
int main()
{
Sqstack S;
int ElemNumber;
int NewElem;
InitSqstack(&S);
printf("请输入元素个数:\n");
scanf("%d",&ElemNumber);
printf("请输入二进制数:\n");
Create(&S,ElemNumber);
SElemType result=Change(&S,ElemNumber);
printf("转为十进制后的结果是:\n");
printf("%d\n",result);
return 0;
}
![运行结果](https://img-blog.csdn.net/20150508174816280)