编辑代码

#include<stdio.h>
#define datatype char
#define MAXSIZE 100
typedef struct
{
	datatype data[MAXSIZE];
	int top;

} SEQSTACK;
SEQSTACK* s;
void Init_Stack(SEQSTACK* s) {
	s->top = -1;
}



int Stack_Empty(SEQSTACK* s) {
	if (s->top == -1)
		return 1;
	else
		return 0;
}

//进栈
void Push_Stack(SEQSTACK* s, datatype x) {
	if (s->top == MAXSIZE - 1)
		printf("Stack full\n");
	else
	{
		s->top++;
		s->data[s->top] = x;
	}
}

//取元素
datatype Gettop_Stack(SEQSTACK* s) {
	datatype x;
	if (Stack_Empty(s))
	{
		printf("Stack empty.\n");
		x=NULL;
	}
	else
		x = s->data[s->top];
	return x;
}


datatype Pop_Stack(SEQSTACK* s) {
	datatype x;
	if (Stack_Empty(s))
	{
		printf("Stack empty\n");
		x=NULL;
	}
	else
	{
		x = s->data[s->top];
		s->top--;
	}
	return x;
}
void main() {
	int a;
	int ch;
	SEQSTACK stack, *s;
	s = &stack;
	Init_Stack(s);
	printf("请输入一个十进制数:");
	scanf(" %d", &a);
	while (a != 0) {
		Push_Stack(s, a % 2);
		a = a / 2;
	}
	printf("它的二进制为:");
	while (!Stack_Empty(s)) {
		ch = Gettop_Stack(s);
		printf("%d", ch);
		Pop_Stack(s);
	}

	//SEQSTACK stack, * s;
	//int num;
	//s = &stack;
	//Init_Stack(s);
	//printf("输入十进制数: ");
	//scanf_s("%d", &num);
	//if (num == 0)
	//{
	//	Push_Stack(s, '0');
	//}
	//else
	//{
	//	while (num > 0)
	//	{
	//		Push_Stack(s, num % 2 + '0');
	//		num = num / 2;
	//	}
	//}
	//printf("二进制数表示:");
	//while (!Stack_Empty(s))
	//{
	//	printf("%c", Pop_Stack(s));
	//}



}