C一元二次方程求解

走远了吗. 提交于 2019-11-29 05:04:06
#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;
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!