重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的程序是有问题的。改法如一楼中的改,他的代码equal_to_zero(float a,float b)中的return写错了,改过来就行。
创新互联建站主要从事成都网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务市南,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
你的程序主要问题就在你输入的a,b,c的值是错误的。你可以这样写 scanf("%f%f%f",a, b, c);不要用逗号什么的分开。这样就可以了,你最好是分成三个输入,否则的话不太好掌握输入的字符。
#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 (e0) {
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;
}
我没运行代码 不过问题貌似在else if(fabs(disc)1e-6)
你的第1个if判断delta 就是那个disc 就是那么三角形样的东西 为0 那么fabs(disc)=1e-6浮点数为0
你的第2个elseif 我想你要判断的是disc为正数 那么可以直接开方 那你应该disc1e-6而不是fabs(disc)1e-6 其实disc0就行了
最后个else你是想disc为负数 那么要有i 我建议你写上disc-(1e-6)或者直接小于0
最后的最后 你一开始f=sqrt(disc)/(2*a); 有验算disc是大于等于0的亲?!!!