#include <stdio.h>
int stack[512];
int top = 0;
void push(int c);
int pop(void);
int is_empty(void);
/*13 2进制1101
1.判断n是不是为0(n!=0),n%2,更新n的值(n=n/2)
2.重复第一步的操作,直到n=0时为止
13
13%2 = 1 13/2 = 6 入栈情况 1011
6%2 = 0 6/2 = 3 出栈情况 1101 刚好得到我们的二进制结果1101
3%2 = 1 3/2 = 1
1%2 = 1 1/2 = 0
3.只要栈不为空,就弹出栈顶内容,打印显示就是我们转化的结果
*/
int main(void)
{
int num;
printf("Please enter an integer in decimal:");
scanf("%d", &num);
while(num)
{
push(num % 2);
num /= 2; //更新n的值
}
while(!is_empty()) //判断一下我们的栈是否为空
printf("%d", pop());//出栈
printf("\n");
return 0;
}
void push(int c)
{
stack[top++] = c;
}
int pop(void)
{
return stack[--top];
}
int is_empty(void)
{
/*
if(top == 0)
return 1;
else
return 0;
*/
return top == 0;
}
C语言实现10进制转2进制(使用栈)
最新推荐文章于 2024-07-24 18:23:35 发布