c语言函数求方程的根

Python020

c语言函数求方程的根,第1张

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main()

{

float a,b,c,x,x1,x2,d

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

d=b*b-4*a*c

if(a==0)

{

if(b==0)

{

if(0==c)

{

printf("等式0!\n")

}

else

{

printf("输入错误!\n")

}

}

else

{

printf("只能构成一元一次方程,x=%.6f\n",0==-(float)c/b ? 0 : -(float)c/b)

}

}

else

{

if(d<0)

{

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

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

printf("x1=%.6f+%.6fi\nx2=%.6f-%.6fi\n",(-b)/(2.0*a),sqrt(-d)/(2.0*a),(-b)/(2.0*a),sqrt(-d)/(2.0*a))

}

else if(d==0)

{

printf("x1=x2=%.6f\n",(-b)/(2.0*a))

}

else

{

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

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

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

}

}

system("PAUSE")

return EXIT_SUCCESS

}

你没有考虑a=0的情况,我把我写的给你看看,你看看有什么不同吧:

#include<stdio.h>

#include<math.h>

main()

{

int a,b,c

double DT,x,x1,x2

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

DT=b*b-4*a*c

if((a==0)&&(b==0))

printf("Input error!\n")

else

{

if(a==0)

{ x=-c/(1.*b)

printf("x=%.6f\n",x)

}

else

{

if(DT==0)

{x=-b/(2*a)

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

}

if(DT>0)

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

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

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

}

if((DT<0)&&(b==0))

{DT=-DT

x1=(sqrt(DT))/(2*a)

x2=(-sqrt(DT))/(2*a)

printf("x1=%.6fi\nx2=%.6fi\n",x1,x2)

}

if((DT<0)&&(b!=0))

{DT=-DT

x1=-b/(2.*a)

x2=sqrt(1.*DT)/(2*a)

printf("x1=%.6f+%.6fi\nx2=%.6f-%.6fi\n",x1,x2,x1,x2)

}

}

}

return 0

}

具体的输入输出格式可能不一样,因为不清楚你的要求,有疑问可以问我