二次方程有助于C。

二次方程有助于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

我想写一个代码来解二次方程。在输入方程的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);

    }


}
#包括
#包括
#包括
int main(){
printf(“形式上的小梁结构+bx+c\n\n”);
浮点数a,b,c,x_1,x_2,x_0;
printf(“君士坦特的入口”);
scanf(“%f”、&a);
printf(“君士坦丁堡入口”);
scanf(“%f”和“b”);
printf(“君士坦特河入口”);
scanf(“%f”、&c);
双dis=b*b-4*a*c;
双sqr=sqrt(dis);
如果(sqr0){
x_1=(-b+sqr)/(2*a);
x_2=(-b-sqr)/(2*a);
printf(“Las Solucions son%f y%f”,x_1,x_2);
}
}

如果
dis<0
,则
sqr=sqrt(dis)
计算结果为非数字(NaN),且NaN总是将false与任何值进行比较(即使
NaN==NaN
为false)。因此,在这种情况下,所有的
if
条件都是false,并且什么也没有发生


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

如果
dis<0
,那么
sqr=sqrt(dis)
的计算结果为非数字(NaN),而NaN与任何事物的比较总是false(即使
NaN==NaN
为false)。因此,在这种情况下,所有的
if
条件都是false,并且什么也没有发生


更正您的公式,一切都应该正常。

sqrt
如果参数为负,则返回
NaN
,将任何内容与
NaN
进行比较,则返回
false
。因此,如果
dis
为负值,则不会输入任何if语句。实际上,你应该检查dis,而不是它的平方根。但也有一个“检测”Nan的技巧:

int main(int argc, char** argv) {

    double f = sqrt(-1);
    if (f != f) {
        printf("oh! Not A Number!");
    }
}

sqrt
如果参数为负数,则返回
NaN
,如果将任何内容与
NaN
进行比较,则返回
false
。因此,如果
dis
为负值,则不会输入任何if语句。实际上,你应该检查dis,而不是它的平方根。但也有一个“检测”Nan的技巧:

int main(int argc, char** argv) {

    double f = sqrt(-1);
    if (f != f) {
        printf("oh! Not A Number!");
    }
}

什么是值?返回并检查您的数学,您需要检查是否
dis
<0,而不是
sqr
。导致崩溃的输入是什么?车祸发生在哪里?您试图在调试器中捕获崩溃?也许你应该花些时间阅读Eric Lippert,并学习如何使用调试器。如果没有崩溃,你为什么要标记这个代码>分段错误< /代码>和<代码>核心>代码?如果你坚持用西班牙语编写代码/注释的问题,你可能需要考虑。就目前而言,在英语论坛上提问并用外语发表评论有点粗鲁。我敢肯定,如果人们用自己的语言回答你的问题,你不会印象太深。值是什么?返回并检查你的数学,你需要检查dis是否
dis
<0,而不是
sqr
。你的输入是什么导致崩溃发生的?车祸发生在哪里?您试图在调试器中捕获崩溃?也许你应该花些时间阅读Eric Lippert,并学习如何使用调试器。如果没有崩溃,你为什么要标记这个代码>分段错误< /代码>和<代码>核心>代码?如果你坚持用西班牙语编写代码/注释的问题,你可能需要考虑。就目前而言,在英语论坛上提问并用外语发表评论有点粗鲁。我敢肯定,如果人们用自己的语言回答你的问题,你不会太感动。