进制转换问题
建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换。
输入
输入只有一行,就是十进制整数。
输出
转换后的二进制数。
样例输入
10
样例输出
1010
十进制怎么转为二进制?十进制转二进制怎么转?
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来
利用栈的后进先出性质写一个10到2进制转换的小程序,实现顺序栈,代码如下:
#includetypedef struct Stack
{
int data[100];
int top;
}SqStack;
//建立顺序栈
void Init(SqStack *&s)
{
s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
//栈的初始化
bool En(SqStack *&s,int e)
{
if(s->top==99)
return false;
s->top++;
s->data[s->top]=e;
return true;
}
//进栈
bool Pop(SqStack *&s)
{
if(s->top==-1)
return false;
s->top--;
return true;
}
//出栈
int main()
{
printf("十进制到二进制转换程序\n*******************\n");
SqStack *s;
Init(s);
int n,m;
printf("请输入一个十进制的整数\n");
scanf("%d",&n);
m=n;
while(m!=0)
{
int e=m%2;
En(s,e);
m/=2;
}
printf("其转化为二进制的数为");
while(s->top!=-1)
{
printf("%d",s->data[s->top]);
Pop(s);
}
return 0;
}