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 时,两根相等,但在函数中我们只输出了一个值。

 

posted @ 2020-07-27 15:46  Hello_Nolan  阅读(170)  评论(0编辑  收藏  举报