演算法:求一元二次方程ax^2 + bx + c = 0的根
阿新 • • 發佈:2019-01-25
一元二次方程
判別式
一元二次方程的實根:
一元二次方程的虛根:
用switch語句實現:
#include "stdio.h"
#include "math.h"
int main(void)
{
float a = 0, b = 0, c = 0;
float discriminant = 0, x1 = 0, x2 = 0;
float p = 0, q = 0;
printf("Please input three coefficient:");
scanf_s("%f %f %f" , &a, &b, &c);
discriminant = pow(b, 2) - 4 * a * c;
switch (discriminant >= 0)
{
case 1:
switch (discriminant > 0)
{
case 1:
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf ("兩個不相等的實根為:x1 = %f, x2 = %f\n", x1, x2);
break;
case 0:
x1 = -b / (2 * a);
printf("兩個相等的實根為:x1 = x2 = %f\n", x1);
break;
}
break;
case 0:
p = -b / (2 * a);
q = sqrt(-discriminant) / (2 * a);
printf("兩個不相等的虛根為:x1 = %f + %fi, x2 = %f - %fi\n" , p, q, p, q);
break;
}
return 0;
}