C一元二次方程求解

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main() {
    // putchar輸出字符,getchar輸入字符, printf格式輸出,scanf格式輸入, puts輸出字符串, gets輸入字符串
    // 一元二次方程求解
    float a, b, c;
    printf("Input a ,b , c :");
    scanf("%f %f %f", &a, &b, &c);
    if (fabs(a) <= 1e-15)    //條件:當|a|<0 時  能夠改爲<=EPS
    {                     //1e-15  表示一個極小的數  浮點型零就是一個近似值
        printf("不是一元二次方程");
        printf("x = %.2f", c / b);
        exit(0);              //執行到此處 程序返回0 並退出
    } else {
        float disc, p, q, x1, x2;
        disc = b * b - 4 * a * c;
        p = -b / (2 * a);
        q = sqrt(fabs(disc)) / (2 * a);
        if (fabs(disc) <= 1e-15) {
            printf("x1 = x2 = %.2f", p);
        } else if (disc > 1e-15) {
            printf("x1 = %.2f, x2 = %.2f", p + q, p - q);
        } else  //(德爾塔小於0 )
        {
            printf("x1 = %.2f+%.2fi\n", p, q);
            printf("x1 = %.2f-%.2fi\n", p, q);
        }

    }
    return 0;
}
相關文章
相關標籤/搜索