重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
创新互联是一家专业提供漳县企业网站建设,专注与网站制作、成都做网站、HTML5、小程序制作等业务。10年已为漳县众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
#define n 20
void change2(int t)
{ //将十进制数转换到存放二进制的数组中
int i;
int b[n]={0};
for(i=0;i20;i++)
{
b[i]=t%2;
t=t/2;
}
for(i=n-1;i=0;i--)
{
printf("%d",b[i]);
}
printf("\n");
}
void main(){
int demo;
printf("请输入一个十进制数:");
scanf("%d",demo);
change2(demo);
}
用栈实现,用520除2把所得余数进栈,把商作为新的数除2,再把余数进栈,取商为新的数,如此往复直到商为1为止,然后把栈中的数依次输出后的1、0组合即为所求数的二进制数。
具体的代码不便粘贴,有兴趣欢迎交流
#includestdio.h
void f(int n)
{
if(n) f(n/2);
else return;
printf("%d",n%2);
}
int main()
{
int n;
while(1)
{
scanf("%d",n);
if(n0) break;
if(n==0) printf("0");
f(n);
printf("\n");
}
return 0;
}
这个是递归程序,程序的意思就是: 十进制转化为2进制,利用辗转除以2取余数的方式,这个网上有很多,其他比如十进制转十六进制也是这个方式,只不过辗转除以16,直到本身变为0,每次相除的余数最后组合成要转换的结果。PKU-一夫
#include
stdio.h
#include
string.h
void
dtob(char
*
pre,
int
l,
int
n)
{
if
(n
0)
//终止条件
{
pre[l++]
=
(n%2)
+
'0';
//每次取1个最低位
pre[l]
=
'\0';
dtob(pre,
l,
n/2);
//然后n=n/2,
字符位置l增1,迭代
}
}
int
main()
{
int
n;
char
b[33];
scanf("%d",
n);
dtob(b,
0,
n);
strrev(b);
//结果是倒着的,翻过来
printf("%s\n",
b);
return
0;
}
int Into2nd(int x,int r[],int n)//该函数返回值为二进制的位数
{if(x==0) {if(n==0) {r[0]=0; return 1;} else return n;}
r[n]=x%2;
return Into2nd(x/2,r,n+1);
}
使用方法:
n=Into2nd(x,r,0);
for (i=n-1;i=0;i--) printf("%d",r[i]);