C语言中用栈实现进制转换,利用栈实现进制转换问题
進(jìn)制轉(zhuǎn)換問(wèn)題
建立順序?;蜴湕?#xff0c;編寫(xiě)程序?qū)崿F(xiàn)十進(jìn)制數(shù)到二進(jìn)制數(shù)的轉(zhuǎn)換。
輸入
輸入只有一行,就是十進(jìn)制整數(shù)。
輸出
轉(zhuǎn)換后的二進(jìn)制數(shù)。
樣例輸入
10
樣例輸出
1010
十進(jìn)制怎么轉(zhuǎn)為二進(jìn)制?十進(jìn)制轉(zhuǎn)二進(jìn)制怎么轉(zhuǎn)?
十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)采用"除2取余,逆序排列"法。具體做法是:用2整除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);再用2去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為小于1時(shí)為止,然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位,依次排列起來(lái)
利用棧的后進(jìn)先出性質(zhì)寫(xiě)一個(gè)10到2進(jìn)制轉(zhuǎn)換的小程序,實(shí)現(xiàn)順序棧,代碼如下:
#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;
}
//進(jìn)棧
bool Pop(SqStack *&s)
{
if(s->top==-1)
return false;
s->top--;
return true;
}
//出棧
int main()
{
printf("十進(jìn)制到二進(jìn)制轉(zhuǎn)換程序\n*******************\n");
SqStack *s;
Init(s);
int n,m;
printf("請(qǐng)輸入一個(gè)十進(jìn)制的整數(shù)\n");
scanf("%d",&n);
m=n;
while(m!=0)
{
int e=m%2;
En(s,e);
m/=2;
}
printf("其轉(zhuǎn)化為二進(jìn)制的數(shù)為");
while(s->top!=-1)
{
printf("%d",s->data[s->top]);
Pop(s);
}
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的C语言中用栈实现进制转换,利用栈实现进制转换问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言蓝桥十进制转十六进制,蓝桥杯 基础
- 下一篇: android信息中字符个数,在andr