十进制转化成二进制的方案有很多,下面给出一种:
#include <stdio.h>
#include <stdlib.h>
#define LEN 50
struct stack
{
int top;
int data[LEN];
};
struct stack mystack = {0, {0}};
//函数声明
int push(int num); //入栈
int pop(void); //出栈
int isempty(void); //判断栈是否为空
int setempty(); //清空栈
//主函数:使用结构体和栈实现十进制转化成二进制
//测试数据为10,其对应二进制为1010
void main(void)
{
int data = 10;
while(data)
{
push(data%2);
data /= 2;
}
while (!isempty())
{
printf("%d", pop());
}
getchar();
}
int push(int num)
{
if(mystack.top == LEN-1){
return 0; //入栈失败
}else{
mystack.data[mystack.top++] = num;
return 1; //入栈成功
}
}
int pop(void)
{
return mystack.data[--mystack.top];
}
int isempty(void)
{
if(mystack.top == 0){ //空返回1
return 1;
}else{ //非空返回0
return 0;
}
}
void setempty()
{
mystack.top == -1;
}