C語言問題求解謝謝,c語言程式設計問題,求解,謝謝。我的過程哪錯了

2021-07-01 01:14:19 字數 1634 閱讀 9210

1樓:匿名使用者

這個函式的作用是反向輸出2進位制數……

具體解釋一下這個bin函式吧:

首先,判斷x/2是否大於0,大於0 的時候呼叫bin(x/2),其實就是把x除以2以後再次呼叫函式,所以這個函式每一次都會把原來的x的數字給除以2,一直到x等於1為止。這個時候函式結束。

然後,這個bin函式輸出此時x對於2的餘數,當x等於偶數時餘數為0,等於奇數時餘數為0.

其實這個就是我們求一個數的二進位制表達方式時是正好相反的順序,我們來看一看普通情況下求一個數的二進位制是怎麼求的:

例如原來的數為10,則:

(1)先求這個數對2的餘數,寫在“個位”上。現在10對2的餘數為0.,所以現在數字為“0”

(2)判斷這個數是否大於1,等於1時計算完畢,大於1時除以2求商並回到(1)。10大於1,大於1時將這個數除以2並求整數(商),現在10除以2,等於5.

(3)再次回到(1),現在求5對2的餘數,寫在“十位”上,現在5對2的餘數為1,於是,原來的數字現在為“10”。

(4)再次回到2,5除以2,求整數,等於2.

(5)再次回到(1),現在2對2的餘數,寫在“百位”上,為0,現在的數字為“010”

(6)再次回到(2),2除以2,等於1

(7)再次回到(1),這一次,1對2的餘數,等於1,寫在“千位”上,現在數字為“1010”

(8)現在回到(2) 1等於1,計算完畢,所以10的二進位制數為“1010”。

而現在這個bin函式會正好將這個二進位制數給反過來寫,因為printf函式會一個一個的列印當前這個數對2的餘數,而不會將第一次的餘數放在“個位”,第二次放在“十位”,第三次放在“百位”這樣,所以原來我們手工計算的結果(從右像左寫),在bin中完全會被反過來(從左向右寫),不知道我這樣解釋你明白了沒有……

2樓:匿名使用者

首先,此題的作用是十進位制數12,轉換為二進位制數1100。你可以把12換成bin(2),進入此函式首先判斷2/2=1,則迭代呼叫bin(1),進入bin(1)後判斷1/2=0,則輸出1%2=1,既輸出1,返回bin(2),輸出2%2=0。最後結果是10既是十進位制數對應的二進位制數。

3樓:兄弟_來喝一杯

程式入口,main(),呼叫函式,bin(12)x=12

x=12,x/2==6   是   呼叫自身x=6,x/2==3   是   呼叫自身x=3,x/2==1   是   呼叫自身x=1,x/2==0   否    輸出:1%2=1回到上一層,3%2=1

回到上一層,6%2=0

回到上一層,12%2=0

程式執行結果:

4樓:擁抱

程式執行的詳細過程,請見此圖:

所以,完整的輸出結果為0

5樓:匿名使用者

擁抱linux用圖回答很好!

我也來用個圖:

c語言程式設計問題,求解,謝謝。我的過程哪錯了

6樓:聽不清啊

#include

int main()

gets(name);

c=(float)(s-max-min)/5;

printf("%s %.2f\n",name,c);

return 0;}

C語言問題C語言程式設計問題

include include void main 氣泡排序按英語詞典規律排序 for i 1 i 5 i printf the country s after sort is n 排序後的國家名稱 for i 0 i 5 i 這段 經過除錯沒有問題,明天有面試,寫個練練手,祝福我吧 樓上你把注釋寫...

c語言程式設計迷宮問題,c語言程式設計的迷宮

include include include struct stack s 1024 void getmaze int,int int takelmaze int,int void push int,int,int void output int,int int maze 1024 1024 bo...

c語言程式設計,C語言程式設計

else 非字母 switch read buf break default break printf n printf tab count d n tab count printf blank count d n blank count printf char count d n char cou...