#includestdio.h
創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供漳縣企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站制作、成都做網(wǎng)站、HTML5、小程序制作等業(yè)務(wù)。10年已為漳縣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
#define n 20
void change2(int t)
{ //將十進(jìn)制數(shù)轉(zhuǎn)換到存放二進(jìn)制的數(shù)組中
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("請(qǐng)輸入一個(gè)十進(jìn)制數(shù):");
scanf("%d",demo);
change2(demo);
}
用棧實(shí)現(xiàn),用520除2把所得余數(shù)進(jìn)棧,把商作為新的數(shù)除2,再把余數(shù)進(jìn)棧,取商為新的數(shù),如此往復(fù)直到商為1為止,然后把棧中的數(shù)依次輸出后的1、0組合即為所求數(shù)的二進(jìn)制數(shù)。
具體的代碼不便粘貼,有興趣歡迎交流
#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;
}
這個(gè)是遞歸程序,程序的意思就是: 十進(jìn)制轉(zhuǎn)化為2進(jìn)制,利用輾轉(zhuǎn)除以2取余數(shù)的方式,這個(gè)網(wǎng)上有很多,其他比如十進(jìn)制轉(zhuǎn)十六進(jìn)制也是這個(gè)方式,只不過(guò)輾轉(zhuǎn)除以16,直到本身變?yōu)?,每次相除的余數(shù)最后組合成要轉(zhuǎn)換的結(jié)果。PKU-一夫
#include
stdio.h
#include
string.h
void
dtob(char
*
pre,
int
l,
int
n)
{
if
(n
0)
//終止條件
{
pre[l++]
=
(n%2)
+
'0';
//每次取1個(gè)最低位
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);
//結(jié)果是倒著的,翻過(guò)來(lái)
printf("%s\n",
b);
return
0;
}
int Into2nd(int x,int r[],int n)//該函數(shù)返回值為二進(jìn)制的位數(shù)
{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]);