#include <stdio.h> #include <stdlib.h> #define STACK_SIZE 100 typedef struct { int top; int data[STACK_SIZE]; } Stack; void initStack(Stack* s) { s->top = -1; } int isStackEmpty(Stack* s) { return s->top == -1; } int isStackFull(Stack* s) { return s->top == STACK_SIZE - 1; } void push(Stack* s, int x) { if (isStackFull(s)) { printf("Stack is full\n"); exit(1); } s->data[++s->top] = x; } int pop(Stack* s) { if (isStackEmpty(s)) { printf("Stack is empty\n"); exit(1); } return s->data[s->top--]; } int main() { int n; Stack s; initStack(&s); printf("输入一个十进制数: "); scanf_s("%d", &n); while (n > 0) { push(&s, n % 2); n /= 2; } printf("二进制为: "); while (!isStackEmpty(&s)) { printf("%d", pop(&s)); } printf("\n"); return 0; }将该程序进行分析
时间: 2024-03-04 09:53:34 浏览: 101
栈和队列的基础上设计模拟停车场管理程序 停车场管理问题 #include<stdio.h> #include<stdlib.h> struct { char status; int num; int time; }a; /*命令的结构*/ typedef struct{ int num; int time; }Element; struct { Element *base; Element *top; in
这是一个使用栈将十进制数转换为二进制数的程序。
程序首先定义了一个栈的结构体,包含栈顶指针和数据数组。然后定义了一些栈的基本操作,如初始化、判断是否为空、判断是否已满、入栈和出栈。
在主函数中,先输入一个十进制数,然后通过栈将其转换为二进制数并输出。具体实现如下:
1. 定义一个整型变量n,作为输入的十进制数。
2. 定义一个栈s,调用initStack函数初始化栈。
3. 通过scanf_s函数输入一个十进制数n。
4. 使用while循环,当n大于0时,将n对2取余数,并将余数入栈,然后将n除以2,直到n等于0为止。
5. 使用while循环,当栈s不为空时,将栈顶元素出栈,并输出该元素,直到栈s为空为止。
6. 输出一个换行符,结束程序。
需要注意的是,scanf_s函数在Windows平台上相对于scanf函数更加安全,它可以指定输入的最大长度,避免了缓冲区溢出的问题。
阅读全文