使用栈实现进制转换
题目描述
使用栈将一个很长(>30)的十进制数转换为二进制数
分析:
此处虽然讲了用栈操作,但是很明显我们可以不用,直接用数组保存。当然用栈也一样。通过分析,我们得出此题无非就是大数除法。
#include"stdio.h"
#include"string.h"
int main()
{
int digit[1000];
char a[1000],a1[1000];
long long b;
int i,j,k,n,l,x,y,mod,mod1;
while(~scanf("%s",a))//输入数据
{
n=strlen(a);//数据长度
x=0;
// l=strlen(a);
b=0;
i=0;
// printf("n=%d\n",n);
while(i!=n)//i为最前面且不为0的下标
{
mod=0;//保留当前位置的余数
mod1=0;
a1[b++]=(a[n-1]-'0')%2+'0';//将最后一个与2取余得到的数保留下来
for(j=i; j<n; j++)
{
mod=(mod1*10+a[j]-'0')%2;//保留j处下标的余数
a[j]=(mod1*10+a[j]-'0')/2+'0';//j处下标的值/2;
mod1=mod;将j处下标的余数给mod1,以便下次计算
}
// a1[b++]=a[n-1]%2;
// a[n-1]=a[n-1]/2;
if(a[i]=='0')//如果i处为0了,则i++;
i++;
}
// printf("i=%d\n",i);
for(b--; b>=0; b--)
{
printf("%c",a1[b]);
}
printf("\n");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)