C語言的問題,這道題怎麼做啊,C語言的問題,這道題怎麼做啊?

2021-05-04 10:19:36 字數 2142 閱讀 6507

1樓:匿名使用者

考你遞迴的用法:

10送入fun(10)

void fun(int n)

n/2=5,條件為真,呼叫函式fun(5),printf("%d",10%2);被壓棧

n/2=2,條件為真,呼叫函式fun(2),printf("%d",5%2);被壓棧

n/2=1,條件為真,呼叫函式fun(1),printf("%d",2%2);被壓棧

n/2=0,條件為假,列印printf("%d",1%2);也就是1

由於棧是先進後出的,所以反相出棧,列印printf("%d",2%2);也就是0

然後列印printf("%d",5%2);也就是1

然後列印printf("%d",10%2);也就是0

所以結果為:1010

2樓:洪冷松

四題選項b和d明顯是相反條件啊,你只要判斷出d是等價的,b肯定就是不等價的啊。

再說題意,while( e ) 就是說只有e的值為0的時候,條件判斷結果為:false

d選項中 ( e != 0 ),當 e 的值為 0 的時候,條件判斷為假:false----等價

b選項中 ( e == 0 ), 當 e 的值為 0 的時候,條件判斷為真:true----不等價

綜上,選b

3樓:聽不清啊

這個題,就是選擇答案d。

圖中,if(n/2)其實就是等價於if(n/2!=0),考慮到n是正數,它也就等價於if(n>1)

總之,第一次呼叫,就滿足條件,進行遞迴呼叫:fun(5)…………具體見圖所示(乙個紅框,就是一次函式呼叫):

依輸出的先後次序,總的輸出就是:1010

4樓:匿名使用者

fun(10);

fun: n=10, n/2不等於0成立,fun(n/2); [n/2=5]

fun: n=5, n/2不等於0成立,fun(n/2); [n/2=2]

fun: n=2, n/2不等於0成立,fun(n/2); [n/2=1]

fun: n=1, n/2不等於0不成立,printf輸出:1fun:

n=2, printf輸出:0,累計輸出:10fun:

n=5, printf輸出:1,累計輸出:101fun:

n=10, printf輸出:0,累計輸出:1010printf輸出:

換行並不是a

5樓:自我程式設計

列印1010。

這是遞迴函式每次執行到呼叫自己的時候,要等呼叫的那個執行完

才會返回繼續執行下一條語句。

也就是說

if(n/2)fun(n/2);//每一次呼叫自己的這一句執行結束,才會執行下面的列印。

printf("%d",n%2);

所以每一層都會列印自己的變數n%2的值。

而最先執行列印的是最裡一層的呼叫,整個執行過程分別是fun(10)->fun(5)->fun(2)->fun(1)。

既列印1%2,2%2,5%2,10%2,也就是1010。

6樓:夏天的小紅花

這是乙個把十進位制數n轉換為二進位制數的程式,選擇答案d。程式的執行是這樣的,裡面判斷語句的功能就是說,如果n除以2的值大於0,就進行遞迴呼叫。這個語句也可以寫成為如果n大於1就進行遞迴呼叫。

等到遞迴呼叫返回時,再輸出這個n除以2的餘數,但是這個操作是要等遞迴呼叫返回後才輸出的,所以是最後一次呼叫的時候的輸出是最靠前的。這樣就實現了反向除二取餘數的功能,也就是說把n轉換為二進位制進行輸出。

c語言這道題怎麼做?

7樓:大展鴻圖

/*若希望以下面的格式輸出這三個變數的值

x: -000025173 mm

y: +000000189 mm

z: -348634726 mm

則輸出語句應為*/

#include

main()

C語言請問這道題怎麼做

fun a,strlen a p1 w p2 w m 1 字串的啟示位址賦給p1,也就是p1指向字串的開始,即 p1 a w m 1是在字串w的起始位置偏移7 1個字元,也就是指向字串的結尾,即 p2 g 整個程式的執行順序如下 開始p1指向開始,p2指向末尾 p1的位址小於p2的時候執行while...

C語言的題這道很簡單的題我怎麼做不對呢,答案為什麼是C呢

注意表示式中y z 不是y z也是真,所以x z y z 為真,整個表示式為真,即值為1 你好,我是程式設計師。首先這個表示式是邏輯表示式,結果肯定是true或false。在c語言中true的值是1,false的值是0。你說的d選項是字串,百分百是錯的。你注意 與 的判斷 前者是第乙個為假 就為假 ...

C語言這個怎麼做,c語言怎麼做

在執行完第乙個case 1後面沒有break所以沒有跳出迴圈,就執行下去case 2,然後case 2後面有break就跳出迴圈所以是a 2,b 1 你可以把case 2 和case 遮蔽掉看結果 和case 1後面加break,就明白了。c語言怎麼做?include include void de...