一. 问题
一元二次方程的一般形式为 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 时,两根相等,但在函数中我们只输出了一个值。