首页 > 电脑

用顺序栈解决进制转换问题,问题在哪里呢

更新时间2019-03-31 09:01:38

#include<stdio.h>

#include<stdlib.h>

 

#define MAXNUM  100;

typedef int DataType;

struct SeqStack{

int t;

DataType *s;

};

typedef struct SeqStack *PSeqStack;

 

/*创建一个空顺序栈*/

PSeqStack createEmptyStack_seq(int m)

{

PSeqStack pastack=(PSeqStack)malloc(sizeof(struct SeqStack));

if(pastack!=NULL){

pastack->s=(DataType*)malloc(sizeof(DataType)*MAXNUM);

if(pastack->s){

    pastack->t=-1;

 

return pastack;

}

else free(pastack);

}

printf("out of space!! ");

return NULL;

}

 

/*判别是否为空*/

int isEmptyStack_seq(PSeqStack pastack)

{

return(pastack->t==-1);

}

 

/*进栈*/

void push_seq(PSeqStack pastack,DataType x)

{

if(pastack->t>=MAXNUM-1)

 printf("overflow! "); 

     else

{pastack->t=pastack->t+1;

pastack->s[pastack->t]=x;

}

}

 

/*出栈*/

void pop_seq(PSeqStack pastack)

{

if(pastack->t==-1)

printf("underflow! ");

else

pastack->t=pastack->t-1;

}

 

/*取站定元素*/

DataType top_seq(PSeqStack pastack)

{

if(pastack->t==-1)

printf("it is empty! ");

else

return(pastack->s[pastack->t]);

}

 

/*转换*/

void conversion(int m)

{

int n,e;

PSeqStack s;

s=createEmptyStack_seq(100);

printf("please input the number to be converted n=:");

scanf("%d",&n);

while(n){

push_seq(s,n%m);

n=n/m;

}

while(!isEmptyStack_seq(s))

{

e=top_seq(s);

pop_seq(s);

printf("%d",e);

}

 

int main()

int m,n;

printf("输入你要转化为的进制数m=");

scanf("%d",&m);

printf("输入一个你要转化的数:");

scanf("%d",&n);

conversion(m);

return 0;

}


程序有两个问题

1.

#define MAXNUM  100;

后面多分号了(初学者常犯错之一)

2.

printf("输入一个你要转化的数:");

scanf("%d",&n);

你的这个是多余的,全删除,并改你的

printf("please input the number to be converted n=:");

printf("输入一个你要转化的数:");

上一篇:谁会的请教一下谢谢

下一篇:c语言关于指针数组的问题?