C语言题“输入系数的有效值,计算一元二次方程的实根和虚根”怎么编?

Python047

C语言题“输入系数的有效值,计算一元二次方程的实根和虚根”怎么编?,第1张

#include <stdio.h>

#include <math.h>

int main(void)

{

double a,b,c,disc,x1,x2,imagpart,realpart,m,n

printf("please input a,b,c(a!=0):\n")

scanf("%lf%lf%lf",&a,&b,&c)

disc = b * b - 4 * a * c

m = - b / (2 * a)

n = sqrt(disc) / (2 * a)

if (fabs(disc) <1e-8)

{

x1 = x2 = m //有两个相等实根

printf("x1=x2=%8.2f\n",x1)

}

else

if (disc >0)

{

x1 = m + n,x2 = m - n//有两个不等实根

printf("x1=%8.2f\t,x2=%8.2f\n",x1,x2)

}

else

{

realpart = m

imagpart = sqrt(-disc) / (2 * a) //有两个共轭复根

printf("x1=%8.2f+%.2fi\t,x2=%8.2f-%.2fi\n",realpart,imagpart,realpart,imagpart)

}

return 0

}

你的if语句那的括号有问题

#include<stdio.h>

#include<math.h>

int main(){

    double a,b,c,d,x1,x2

    scanf("%f%f%f",&a,&b,&c)

    if(a==0){

        if(b==0){

            if(c==0)

                printf("该式为恒等式\n")

            else

                printf("该式不成立,请重新输入a,b,c\n")

        }else{

            x1=c/b

            printf("x1=x2=%f\n",x1)

        }else

           d=b*b-4*a*c

     if(d<0){

         d=-d

         x1=(-b+sqrt(d))/(2*a)

         x2=(-b-sqrt(d))/(2*a)

         printf("x1=%f,x2=%f,虚根\n",x1,x2)

     }else{

         x1=(-b+sqrt(d))/(2*a)

         x2=(-b-sqrt(d))/(2*a)

         printf("x1=%f,x2=%f\n",x1,x2)

     }

     return 0

}