|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- #define STACKINITSIZE 20
- #define STACKADD 10
- typedef char ElemType;
- typedef struct
- {
- ElemType *base;
- ElemType *top;
- int stackSize;
- }sqStack;
- void InitStack(sqStack *s)
- {
- s->base=(ElemType *)malloc((STACKINITSIZE)*sizeof(ElemType));
- if(!s->base)
- {
- exit(0);
- }
- s->top=s->base;
- s->stackSize=STACKINITSIZE;
- }
- void Push(sqStack *s,ElemType e)
- {
- if(s->top-s->base>=s->stackSize)
- {
- s->base=(ElemType *)realloc(s->base,(s->stackSize+STACKADD)*sizeof(ElemType));
- if(!s->base)
- {
- exit(0);
- }
- s->top=s->base+s->stackSize;
- s->stackSize=s->stackSize+STACKADD;
- }
- *(s->top)=e;
- s->top++;
- }
- void Pop(sqStack *s,ElemType *e)
- {
- if(s->base==s->top)
- {
- return;
- }
- *e=*--(s->top);
- }
- int Stacklen(sqStack s)
- {
- return(s.top-s.base);
- }
- main (void)
- {
- sqStack s1,s2;
- ElemType ch;
- InitStack(&s1);
- printf("请输入二进制数,输入#结束:");
- scanf("%c",&ch);
- while(ch!='#')
- {
- Push(&s1,ch);
- scanf("%c",&ch);
- }
- getchar();
- int i,j,len,sum=0;
- len=Stacklen(s1);
- for(i=0;i<len;i+3)
- {
- sum=0;
- for(j=0;j<3;j++)
- {
- Pop(&s1,&ch);
- sum=sum+(ch-'0')*pow(2,j);
- if(s1.base==s1.top) break;
- }
- Push(&s2,sum+'0');
- }
- InitStack(&s2);
- printf("转换为八进制为:");
- while(s2.base!=s2.top)
- {
- Pop(&s2,&ch);
- printf("%c",ch);
- }
- return 0;
- }
复制代码
不知道错哪里了,总是运行不了,谁有空可以帮我看看吗
两个错误
1、main(void), 应该改成int main(void)这种形式
2、你用的是什么编译器或软件?
如果用的linux下编译的话,需要加-lm选项,如:gcc -stack.c -o exe -lm
可以推荐vc++ 6.0开发环境编译应该是没有问题的
|
|