c语言求二次函数的根

Python012

c语言求二次函数的根,第1张

#include <stdio.h>

int main(void)

{

double a,b,c,d,e

double x1,x2

printf("请输入ax^2+bx +c = 0中a,b,c的值")

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

e = b * b - 4 * a * c

if (e<0) {

printf("无解,请重新输入\n")

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

}

printf("输入正确,正在计算....\n")

d = sqrt(e)

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

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

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

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

return 0

}

算法没有问题

问题出在精度

float精度不足 导致计算到一定精度时进入浮点陷阱

把所有的float定义改为double 输入输出对应用%lf 就可以得到正确结果了