输入一个十进制整数,将其转换为二进制整数,然后输出。(要求利用顺序栈出、入栈算法实现)

我有一个提问了已经,那里有悬赏
2024-11-18 08:47:17
推荐回答(3个)
回答(1):

测试结果:
987
1111011011

代码:
#include
#include
#include "conio.h"
#include
#define M 100

typedef int datatype; //datetype 代替int

typedef struct seqstack
{
datatype data[M];
int top;
};//结构体定义

void InitStack(seqstack *s) //栈的初始化,开始没有元素,栈顶指针为-1
{
s->top=-1;
}

int StackEmpty(seqstack *s)//判断栈是否为空
{
if (s->top>=0)
return 1;
else
return 0;
}

seqstack *push(seqstack *s,datatype x) //元素入栈,top上移。如果top=99 已满(栈容量最大100)
{
if (s->top==M-1)
return NULL;
else
{
s->top++;s->data[s->top]=x;
}
return s;
}

datatype pop(seqstack *s)//元素弹出
{
datatype x;
x=s->data[s->top];
s->top--;
return x;
}

main()
{
seqstack *s;
datatype n,e;
int i=0,j=0;
scanf("%u",&n);
s=(struct seqstack*)malloc(sizeof(int));
if (s==NULL) exit(0);

InitStack(s);
while(n)
{push(s,n%2);//出2取余
i++;
n=n/2;//除2
}
while(j {
j++;
e=pop(s);
printf("%d",e);
}
getch();
}

你调试的时候把//注释的汉字全部去掉!

楼主好运!

回答(2):

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace chen
{
class Program
{
static Stack my_stack = new Stack();
static void Main(string[] args)
{
computer(100);
foreach (object item in my_stack)
{
Console.Write(item);
}
Console.ReadKey();
}
static void computer(int num)
{
while (num>0)
{
my_stack.Push(num % 2);
num=num / 2;
}
}
}
}

回答(3):

123