
三、使用 C 或 Java 填寫空格處,以完成下列函式。
輸入 a, b, c 三個浮點數(實數),計算並回傳(b2 - 4
a
c)的開根號之值,若(b2 - 4
a
c)
是負數,則回傳-1。(5分)
double f1(double a,double b,double c){
if( (1) ) return -1;
else return sqrt((b*b)-(4*a*c));
}
輸入 a, b, c 三個浮點數(實數),利用上題的一個函式 f1,計算並回傳
F(x) = ax2 + bx + c 的兩個根。若有虛根,則回傳-999, -999;若為實根,則兩個
根分別為(-b+Q)/(2
a)和(-b-Q)/(2
a),Q為(b2 - 4
a
c
)
的開根號之值。(10 分)
void f2(double a,double b, double c, double *ans1, double *ans2){
if( (1) -1){
(2) = -999;
(*ans2) = -999;
}
else{ (*ans1) = (-b+f1(a, b, c))/(2*a);
(*ans2) = (-b-f1(a, b, c))/(2*a);
}
}
利用上題的函式 f2,回答本題。本函式的第一個輸入為正整數 n,再輸入 n 組
(a, b, c)三個實數,每一組可以求得一個 F(x)的兩個根( ),計
算並回傳其中最大的實根。(10 分)
double f3(){
int i, n;
double a, b, c, ans1, ans2, max = -999;
scanf("% d",&n);
for(i=0;i){
scanf("%lf %lf %lf ",&a, &b ,&c);
f2(a,b,c, &ans1, &ans2);
if( (1) ){ max = ans1; }
if( (2) ){ max = ans2; }
}
return max;
}
(請接第三頁)