c - C中的二次方程式帮助。

标签 c

<分区>

我正在尝试编写求解二次方程的代码。输入方程式的 3 个常数后,什么也没有发生。即使有条件,程序也会结束。

这是代码。感谢您的帮助。

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

int main(){

    printf("Se va a trabajar con la ecuacion de la forma ax^2+bx+c\n\n" );


    float a,b,c,x_1,x_2,x_0;

    printf("Ingrese el valor de la constante a: ");
    scanf("%f", &a);

    printf("Ingrese el valor de la constante b: ");
    scanf("%f", &b);

    printf("Ingrese el valor de la constante c: ");
    scanf("%f", &c);

    double dis = b*b-4*a*c;

    double sqr = sqrt(dis);

    if(sqr<0){

        printf("No tiene solucion en los numeros reales");


    }



    if(sqr==0){

        x_0= -b/(2*a);

        printf("La solucion es %f", x_0);


    }

    if(sqr>0){

       x_1= (-b + sqr)/(2*a); 
       x_2= (-b - sqr)/(2*a); 

       printf("Las soluciones son %f y %f", x_1, x_2);

    }


}

最佳答案

如果dis < 0 , 然后 sqr = sqrt(dis)计算结果为非数字 (NaN),而 NaN 与任何事物比较时始终为假(甚至 NaN == NaN 为假)。因此,在这种情况下,您所有的 if条件为假,什么也没有发生。

修正你的公式,一切都会好起来的。

关于c - C中的二次方程式帮助。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517415/

相关文章:

c - 重用 malloc 将不同的指针传递给信号处理程序

c - 重复的声明。错误: conflicting types for ‘functionname’

无法使用 scanf 退出 while 循环。(运行长度解码)

c - 如何在C中的TCP数据包中设置自定义syn/ack值?

c - 如何用 C 语言制作 BufferedReader

c - 从键盘输入数据

c - 创建私有(private)枚举值

c++ - uint32、int16、uint8 .. 为什么这些常用数据类型没有纳入标准

c - "static const"对比 "#define"对比 "enum"

检查 Char 是否包含数字并将其转换为 INT