c语言计算一元二次方程ax2+bx+c=0的根,C语言,求一元二次方程ax2+bx+c=0的根。

#include

#include

float x1,x2,disc,realpart,imagpart;//全局变量

float great_than_zero(float a,float b)//disc>0时的函数

{

x1=(float)(-b+sqrt(disc))/(2*a);//(v6默认是double型),强制类型转换使数类型据统一

x2=(float)(-b-sqrt(disc))/(2*a);

return(0);

}

float equal_to_zero(float a,float b)//disc=0时的函数

{

x1=x2=-b/(2*a);

return(0);

}

float smaller_than_zero(float a,float b)//disc<0时的函数

{

realpart=-b/(2*a);//复根的实部

imagpart=(float)sqrt(-disc)/(2*a);//复根的虚部

return(0);

}

int main()

{

float a,b,c;

int flag=1;

while(flag)

{

printf("input a,b,c:");

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

printf("the equation:");

if(fabs(a)<=1e-6)

printf("is not a quadratic.input date again!\n");

else

{

printf("%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);

printf("root:");

disc=b*b-4*a*c;

if(disc>0)

{

great_than_zero(a,b);

printf("has distinct real roots:x1=%5.2f\tx2=%5.2f\n",x1,x2);

}

else if(fabs(disc)<=1e-6)

{

equal_to_zero(a,b);

printf("has two equal roots:x1=x2=%5.2f\n",x1,x2);

}

else

{

smaller_than_zero(a,b);

printf("hascomplex roots:x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",realpart,imagpart,realpart,imagpart);

}

flag=0;

}

}

}

运行如下:

a37d0468e0deae42123230936f6c6cc7.png

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值