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

時間 2021-07-01 01:14:21

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語言程式設計問題,不知道錯在哪裡?

水上漂湯 你的思路太複雜了,我幫你簡化一下。你有沒有做過把12345變成54321這樣的程式呢?假設數是輸入的數是m,sum初值為0 n m 10 得到個位數5 sum sum nm m 10 現在m 1234 n m 10 得到現在的個位數4 sum sum nm m 10 現在m 123 現在能...

求解C語言程式設計題,C語言程式設計題求解

int main else goto again for i 0 i 100 i 僅供參考 冬一又二分之一 include include include int get3num int a,int b,int n int i int sum 0 for i 0 iif a i 3 0 b sum ...

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

如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。例如 scanf d,d,d a,b,c 其中用非格式符 作間隔符,故輸入時應為 5,6,7 與scanf 雙引號之間的格式必須一樣 又如 則輸入應為 a 5,b 6,c 7 如輸入的資料與輸出的型別不一致時,雖然編譯能夠通過,但結果將不正確...