二、請回答下列 C 語言程式問題:
請問下列函式,f1(0.5, 6.5)的輸出為何(該數字的精確度到小數點後第一位)?
(5 分)
double f1(double x, double y) {
int a=2, b=1, c=1;
x+=(a+b+c==2*b);
x-=a*b/x;
return (x+c);
}
詳解 (共 4 筆)
林葳
詳解 #3594417
x+=(a+b+c==2*b) 展開為 ...
(共 192 字,隱藏中)
前往觀看
倪維廷
詳解 #3527447
-2.5
(共 6 字,隱藏中)
前往觀看
hchungw
詳解 #6051239
當呼叫f1(0.5, 6.5)時,x初始值為0.5,y的值為6.5(儘管y在函式內並未被使用)。
變數a、b、和c分別被初始化為2、1、和1。
x += (a + b + c == 2 * b);
計算a + b + c得4,2 * b得2,判斷式(4 == 2)為false,等同於0。
因此,這一步不改變x的值,x仍然是0.5。
x -= a * b / x;
計算a * b / x得2 / 0.5,等於4。
x減去4,結果是0.5 - 4,等於-3.5。
返回x + c;
c的值為1,因此-3.5 + 1等於-2.5。
最終,函式返回-2.5,這就是f1(0.5, 6.5)的結果。
x += (a + b + c == 2 * b);
計算a + b + c得4,2 * b得2,判斷式(4 == 2)為false,等同於0。
因此,這一步不改變x的值,x仍然是0.5。
x -= a * b / x;
計算a * b / x得2 / 0.5,等於4。
x減去4,結果是0.5 - 4,等於-3.5。
返回x + c;
c的值為1,因此-3.5 + 1等於-2.5。
最終,函式返回-2.5,這就是f1(0.5, 6.5)的結果。
Lin Jai Shing
詳解 #3597932
-3.00000 (a+b+c==2*...
(共 99 字,隱藏中)
前往觀看