栈:输入十进制正整数转换为二进制
#define MAXSIZE 20
typedef struct
{
int arr[MAXSIZE];
int top;
}Stack;
void push(Stack *p,int e)
{
if(p->top==MAXSIZE-1)
{
printf("无法入栈\n");
}
else
{
p->arr[++p->top]=e;
}
}
void pop(Stack *p)
{
int e;
if(p->top==-1)
{
printf("栈空\n");
}
else
{
e=p->arr[p->top--];
printf("%d",e);
}
}
void converse(Stack *p,int num)
{
int mod;
while(num!=0)
{
mod = num%2;
push(p,mod);
num=num/2;
}
}
int main()
{
Stack s;
s.top = -1;
int num;
printf("请输入需要转换的十进制正整数:");
scanf("%d",&num);
converse(&s,num);
printf("转换为二进制为:");
while(s.top!=-1)
{
pop(&s);
}
}