c語言關於函式的程式問題解析

時間 2022-04-09 01:20:15

1樓:hhp和尚

差不多也算一個遞迴問題了

if (b>=2) conv(b/2); 當b>2時呼叫本身第一次if(b>=2) 執行conv(b/2);

第二次if(b>=2) 這時b為b/2 為真就繼續執行conv(b/2); 為假執printf("%d",b%2); 返**用它本身的那裡去

比如b=22;

第1次 b=22,呼叫conv(b/2)

第2次 b=11,呼叫conv(b/2)

第3次 b=5,呼叫conv(b/2)

第4次 b=2,呼叫conv(b/2)

第5次 b=1,輸出printf("%d",b%2); 1返回第4次,執行printf("%d",b%2); 0返回第3次,執行printf("%d",b%2); 1返回第2次,執行printf("%d",b%2); 1返回第1次,執行printf("%d",b%2); 0

2樓:憤怒的張靚穎

conv(d); d是什麼東東?

printf("%d",b%2);輸出應該是10進位制,怎麼跑出10110

來了,這個程式你肯定沒上機跑過。

才看到,拜託你有點職業精神printf("%d\n",b%2);加個換行。

反覆呼叫conv函式5次。22 \ 11\ 5\ 2 \1,列印出1\2\5\11\22 除以2的餘數,最早呼叫的最遲列印出來。

C語言,這題解析是不是錯了,C語言,這題的解析有問題把??

因為指標是 p與 s是int,因為指標p c,即 p c 0 那麼 p 1 c 1 指標之間的加減運算是根據指標的型別進行調整的,所以雖然s p地址之間相差20,但是這兩個地址之間只相差5個地址。倘若你把 p與 s改成short或char型別,那麼答案卻變成了10或20了 028.5e 3 可以,但...

一個關於C語言的程式問題?C語言程式問題?

資料在記憶體中都是二進位制的,無符號的和有符號的資料,在記憶體中的表示是一樣的。在記憶體中資料的表示都是補碼,比如1在記憶體中表示為00000001,1在記憶體中的表示為11111111.不管你是用什麼有符號,還是無符號的,在記憶體中,資料都是這樣表示的。你定義了一個unsigned int a,只...

C語言指標函式的問題,關於C語言指標函式的使用問題

你這個問題,就是典型的不瞭解編譯過程的人容易犯的錯誤,關於指標和記憶體分配的問題,樓上已經講了很多了,這裡補充一點 你這段 裡 str hello world 這樣的定義,hello world 字串是屬於const char,編譯的時候,會編譯在const資料區,這一段的資料是受系統保護的,是不允...