真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

二進制轉換函數遞歸c語言,c語言轉二進制庫函數

怎樣用遞歸的方法將二進制轉換成十進制?(c語言)

#include stdio.h

10年積累的網站建設、成都網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有大悟免費網站建設讓你可以放心的選擇與我們合作。

#include stdlib.h

int Math(int n)//這個是用來算二進制每一個位置上的數字所標示的實際值。例如:1001:第一個“1“ 表示8

{

int i,sum=1;

for(i=0;in;i++)

{

sum= sum*2;

}

return sum;

}

int judge(int n)//傳進來的數值是二進制,但是他實際是十進制數,只不過只有1和0組成,

{

int sum=0,k=0;

while(n!=0)

{

int m=n%10;//獲取每個位置的數字

sum=sum+m*Math(k);//求和

n=n/10;

k++;//用來表示第幾個位置

}

return sum;

}

int main()

{

int m;

scanf("%d",m);

printf("%d\n",judge(m));

return 0;

}

自己寫的,有什么問題一起討論!thanks!

c語言: 編寫遞歸函數把輸入的一個負整數轉換成二進制輸出

根據評論要求,改進代碼:

1、函數getBCode是題目要的遞歸函數,實現(xiàn)轉二進制(最高位是符號位)。

思路是十進制數絕對值除以2求余,得到反向二進制原碼,反向創(chuàng)建鏈表保存結果,最終得到的單向鏈表就是完整二進制數原碼,之后根據正負性,負數取反+1。鏈表頭添加符號位。

2、函數freeBny為釋放鏈表,如要重復調用函數getBCode,每次調用需調用一次freeBny。

3、函數showBny是打印輸出,為對齊顯示,按4的倍數位打印,高位補齊的位數值均與符號位一致。

#include stdio.h

#include malloc.h

#include math.h

typedef struct binary//成員用char類型保存數值,不是'1'或'0'的ASCII碼

{

char b;//一位二進制數0或1

struct binary *next;

}BNY;

BNY *getBCode(int n);//獲得二進制數(最高位是符號位)

void showBny(BNY *bnyHead);//對齊打印二進制數(保證是4的倍數)

void freeBny(BNY *bnyHead);//釋放二進制數鏈表空間

int main()

{

int n;

BNY bny,*bnyHead=bny;

while(1)

{

? printf("請輸入一個整數:"),scanf("%d",n);

? bnyHead-next=getBCode(n);

? printf("轉為二進制數:"),showBny(bnyHead);

? freeBny(bnyHead);

? printf("\n");

}

return 0;

}

void freeBny(BNY *bnyHead)

{

BNY *prev=NULL,*bny=NULL;

bny=bnyHead-next;

while(bny)

{

? if(prev) prev-next=NULL,free(prev),prev=NULL;

? prev=bny;

? bny=bny-next;

}

bnyHead-next=NULL;

}

void showBny(BNY *bnyHead)

{

int i,f=-1,len=0,n=0;

BNY *bnySave=bnyHead;

while(bnyHead-next)

{

? if(f==-1) f=bnyHead-next-b;

? len++;

? bnyHead=bnyHead-next;

}

if(len%4)

? n=4-len%4;

for(i=0;in;i++)printf("%d",f);

bnyHead=bnySave;

while(bnyHead-next)

{

? printf("%d",bnyHead-next-b);

? n++;

? if(n==4)printf(" "),n=0;

? bnyHead=bnyHead-next;

}

}

BNY *getBCode(int n)

{

int s,y;

static BNY*bnyPrev=NULL;

static int cy=0,f=-1;//加1進位用

if(f==-1 n=0)f=1;

if(f==-1 n0)f=0,cy=1;

n=abs(n);

BNY *bnyNew=NULL;

s=n/2,y=n%2;

bnyNew=(BNY *)malloc(sizeof(BNY));

if(!bnyNew) return NULL;

bnyNew-b=y;

// 如是負數,直接取反+1

if(!f) bnyNew-b=!(bnyNew-b);//從最低位開始,負數取反

if(cy)bnyNew-b=bnyNew-b+cy,cy=0;//負數+1

if(bnyNew-b1)bnyNew-b=0,cy=1;

bnyNew-next=NULL;

if(bnyPrev) bnyNew-next=bnyPrev;

bnyPrev=bnyNew;

n=s;

if(n==0)

{

? bnyNew=(BNY *)malloc(sizeof(BNY));//添加符號位

? if(!bnyNew) return NULL;

? if(!f)

? ? ? bnyNew-b=1;

? else

? ? ? bnyNew-b=0;

? bnyNew-next=bnyPrev;

? bnyPrev=NULL;

? cy=0,f=-1;

? return bnyNew;

}

return getBCode(n);

}

C語言用函數的遞歸調用將十進制數轉化為二進制數

#includestdio.h

#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);

}


名稱欄目:二進制轉換函數遞歸c語言,c語言轉二進制庫函數
URL地址:http://weahome.cn/article/dssehge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部