Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

a006. 一元二次方程式

題目連結

https://zerojudge.tw/ShowProblem?problemid=a006

解題思路

求一元二次方程式的根有多種方式,舉凡配方法、十字交乘等,而這裡採用的是公式解。若判別式 b2-4ac > 0 ,代表此方程式有兩相異實根 (-b±√b2-4ac)/2a ;若判別式 b2-4ac = 0 ,代表此方程式有兩相同實根 (-b+√(b2-4ac))/2a = (-b-√(b2-4ac))/2a ;若判別式 b2-4ac < 0 ,代表此方程式沒有實根。

注意事項

本題中使用了sqrt()函式表示根式寫法。由於sqrt()函式並非標準函式庫裡的函式,使用前須先引用 <math.h> 函式庫。

程式碼:C語言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>
int main() {
//宣告並讀取變數a、b、c,代表一元二次方程式的三個係數
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
//宣告變數D,代表一元二次方程式的判別式
int D = b*b-4*a*c;
//若判別式小於零,代表無實根存在
if(D < 0)
printf("No real root\n");
//若判別式大於等於零,代表有實根存在
else {
int x1 = (-b+sqrt(D))/(2*a);
int x2 = (-b-sqrt(D))/(2*a);
//若判別式大於零,代表有兩相異實根
if(D > 0)
printf("Two different roots x1=%d , x2=%d", x1, x2);
//若判別式等於零,代表有相同實根
else if(D == 0)
printf("Two same roots x=%d", x1);
}
return 0;
}