/******************************* 二进制转十进制 (栈) *******************************/ #include <stdio.h> #include <stdlib.h> #include <math.h> typedef struct Satck { char *base; char *top; int size; }Sat; void init (Sat *s) { s->base = (char *)malloc(20*sizeof(char)); s->top = s->base; s->size = 20; } void push(Sat *s, char c) { if (s->top - s->base >= s->size) { s->base = (char *)realloc(s->base, (s->size+10)*sizeof(char)); s->size = 10 + s->size; } *(s->top) = c; s->top ++; } void pop(Sat *s, char *c) { if (s->base == s->top) { return ; } *c = *--(s->top); } int len(Sat s) { return (s.top-s.base); } int main() { char c; Sat s; int le, sum = 0; init(&s); scanf("%c", &c); while (c != '#') { push(&s, c); scanf("%c", &c); } getchar(); le = len(s); for (int i=0;i<le ;i++) { pop(&s, &c); sum = sum + (c-48) * pow(2, i); } printf("%d ", sum); }