用顺序栈解决进制转换问题,问题在哪里呢
#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语言关于指针数组的问题?
上一篇:谁会的请教一下谢谢