题目: 链栈 利用链栈实现将一个十进制整数转换成二进制数。然后输出 如:十进制数为出格式类似:十进制数7对应的二进制数为111,对应的八进制数为7
运算过程
要点:除二取余,倒序排列解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果例如把52换算成二进制数,计算结果如图:200除以2得到的余数依次为:00010011,倒序排列,所以200对应的二进制数就是11001000。由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位....。于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个0。本文都以8位为例。那么:(200)10=(11001000)2 |
---|
实现流程
代码:
#include<stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef int elemtype;
typedef struct
{
elemtype data[MaxSize];
int top;
}SqStack; //建立一个栈
int main()
{
SqStack *s;
s = (SqStack *)malloc(sizeof(SqStack));
s->top = -1; //初始化栈
int num = 111; //待处理的数字 111
while(num > 0)
{
int m=num/2;
int n=num%2;
//n进栈
{
if(s->top == MaxSize-1)
{
printf("栈满溢出!!!
");
return 0;
}
s->top++;
s->data[s->top]=n;
}
num=m;
}
//出栈
{
while(s->top != -1)
{
int res = s->data[s->top];
s->top--;
printf("%d", res);
}
printf("
");
}
free(s); //摧毁栈
}
文件下载地址:见文章末尾