大哥求指导
从键盘输入一个10进制的整数x和需要进行转换的进制n,输出x对应的n进制的数。例如,从键盘输入20和8,在数组b中应该是2 4
程序代码:#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
int *top;
int *base;
int stacksize;
}sqstack;
int Initstack(sqstack &S)
{
S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base)
return 0;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}
int Push(sqstack &S,int e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(int *)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(int));
if(!S.base)
return 0;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return 1;
}
int Pop(sqstack &S,int &e)
{
if(S.top==S.base)
{
return 0;
}
e=*--S.top;
return 1;
}
int IsEmpty(sqstack &S)
{
if(S.top==S.base)
return 1;
else
return 0;
}
int main()
{
sqstack S;
Initstack(S);
int e;
int m;
int n;
printf("please input a number!\n");
scanf("%d",&m);
printf("请输入你想要转换的进制数!\n");
scanf("%d",&n);
while(m)
{
Push(S,m%n);
m=m/n;
}
while(!IsEmpty(S))
{
Pop(S,e);
printf("%d ",e);
}
printf("\n");
return 0;
}以前写的,可以运行,如果是16进制的话,在输出的时候稍微改动下就可以了
