一道c語言題

2022-11-24 23:36:07 字數 1402 閱讀 7791

1樓:城北布衣

這是一道程式編譯順序的考題,涉及到函式呼叫的先後順序及運算符號的優先順序等問題。下面我給你講。

c的程式編譯總是從main函式開始的,這道題的重點在「fun((int)fun(a+c,b),a-c)); 」語句。

系統首先要確定最外層 fun()函式的實參,第乙個引數的確定需要遞迴呼叫fun()函式(不妨稱其為內層函式)。內層函式的兩個引數分別為x=a+b=2+8=10、y=b=5,執行函式體x+y=10+5=15,於是得外層函式的引數x=15。其另乙個引數y=a-c=2-b=-6,再次執行函式體,得最終返回值x+y=15+(-6)=9。

應該能看明白吧。

2樓:匿名使用者

解:float fun(int x,int y)//返回x+y的值,因x、y的型別和函式返回值的不一致,所以用強制型別轉換

main()

你的**很不規範。

fun((int)fun(a+c,b),a-c)的意思是求(int)fun(a+c,b)和a-c的和

(int)fun(a+c,b)的值為a+c+b=15,a-c的值為-6

所以(int)fun(a+c,b)與a-c的和是15+(-6)=9

3樓:匿名使用者

printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); 中先執行(int)fun(a+c,b),得到的是a + b + c = 15;

然後執行fun((int)fun(a+c,b),a-c)),其中(int)fun(a+c,b)= 15,fun((int)fun(a+c,b),a-c))等效為fun(15,a-c);結果為9,所以最後輸出9;

4樓:匿名使用者

是先做fun((int)fun(a+c,b),a-c)); 裡面的fun(a+c,b)

先把a+c=10;b=5;傳給函式float fun(int x,int y) x=10,y=5再由return(x+y)換回x+y=15給(int)fun(a+c,b)再呼叫外面的fun函式 即再次呼叫float fun(int x,int y)得到x=15,y=-6;再由return(x+y)換回x+y=9;輸出即的答案

5樓:z周云云

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

這裡面有二次呼叫,第一次(int)fun(a+c,b)這時return(x+y)返回的值是15

第二次呼叫是fun(15,-6)這是return(x+y)返回的值是9

%3.0f是顯示格式

3表示整數部分保留3位,超過3位按實際位數顯示,少於3位補空格0表示顯示的小數部分,0即表示不顯示小數

所以答案是 9

9前面有兩個空格

如果%3.2的話就是 9.00

c語言的一道題,C語言的一道題

董巨集諫念雙 include include void main int p 4 p a s 0 printf 輸入學號 scanf d n if n 3 printf 該生的成績和平均分如下 n printf 成績1 t成績2 t成績3 t成績4 t平均分 n for i 0 i 4 i prin...

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

float y w 就是每一項的值,即 1 2 1 4 1 8,要加項小於10的 6,也就是要 float y w的絕對值大於10的 6才迴圈,在不用abs函式的求絕對值的時候,假定要x的絕對值 x可能為正數或負數 大於10的 6,那麼自然就是x z1 同為正數 或者x z1 同為負數 其實這題 太...

一道c語言題

應該是int p 8 i 0,j 0 while i 7 7是陣列元素個數if p i 2 奇數 13 15 17j j p i printf d n j 45 選b while i 7 迴圈結束條件 i 7 的時候結束 那個不是括號應該是小於號 if p i 2 這裡 求餘數j j p i 第一次...