1. 程式人生 > >演算法:求一元二次方程ax^2 + bx + c = 0的根

演算法:求一元二次方程ax^2 + bx + c = 0的根

一元二次方程ax2+bx+c=0

判別式D=b24ac
一元二次方程的實根:x=b±D2a
一元二次方程的虛根:x=b2a±D2ai

用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; }