trans_num_to_stack.c

来自「用栈来实现数制的转换!C语言写的」· C语言 代码 · 共 63 行

C
63
字号
#include"stdio.h" 
#include"stdlib.h" 
#define null 0 
#define n 10 
struct stack{ 
int *base; 
int *top; 
int stacksize; 
}; 
void initstack(struct stack *s) 
{ 
s->base=(int*)malloc(20*sizeof(int)); 
if(!s->base) exit(0); 
s->top=s->base; 
s->stacksize=20; 
return; 
} 
void push(struct stack*s,int e ) 
{ 
if(s->top-s->base>=s->stacksize) 
{ s->base=(int*)realloc(s->base,(s->stacksize+n)*sizeof(int)); 
if(!s->base) exit(0); 
s->top=s->base+s->stacksize; 
s->stacksize+=n; 
} 
*(s->top)++=e; 
return; 
} 
void pop(struct stack *s) 
{ int e; 
if(s->top==s->base) return; 
e=*--s->top; printf("%d",e); 
return; 
} 
void clearstack(struct stack*s) 
{ 

if(s->top==s->base) return; 
s->top=s->base; 
return; 
} 
void conversion(int m) 
{ struct stack s; 
int*p=null; 
initstack(&s); 

while(m) 
{ push(&s,m%2); 
m=m/2; 
} 
for(p=s.top-1;p>=s.base;p--) 
printf("%d",*p); 
clearstack(&s); 
} 
void main() 
{int x; 
printf("\nplease input a num (radix 10):"); 
scanf("%d",&x); 
printf("\n after conversion (10)%d to 2: ",x); 
conversion(x); 
printf("\n"); 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?