27. 求解一元二次方程
阿新 • • 發佈:2020-07-27
一. 問題
一元二次方程的一般形式為 ax2 + bx + c = 0,求出 x 的值。
二. 思路
因為已經明確說明了是二次的,所以我們不考慮 a = 0 的情況。在這裡,我們選擇利用求根公式計算方程的根。
三. 程式碼實現
1 void solution(double a, double b, double c) { 2 double delta = b * b - 4 * a * c; 3 if (delta < 0) { 4 cout << "No solution." << endl; 5 } else if(delta == 0) { 6 double x = (-b) / (2 * a); 7 cout << x << endl; 8 } else { 9 double x1 = ((-b) + sqrt(delta)) / (2 * a); 10 double x2 = ((-b) - sqrt(delta)) / (2 * a); 11 12 cout << "x1 = " << x1 << endl; 13 cout << "x2 = " << x2 << endl; 14 } 15 }
主函式測試:
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 5 int main() { 6 solution(1, -2, 1); 7 solution(4, -4, 1); 8 9 return 0; 10 }
程式碼中有幾處需要說明:
1. 函式直接輸出了結果,並沒有返回兩個根的值。儘量不要通過引用引數返回值,這樣作是一個不好的習慣。
2. 當判別式等於 0 時,兩根相等,但在函式中我們只輸出了一個值。