请大家看看我这一元二次方程求根程序哪错了

Nswsnb 2019-10-10 04:19:18
#include<stdio.h> #include<math.h> /* 有两个不等的实根即d=b*b-4*a*c > 0 有两个相等的实根即d=b*b-4*a*c = 0 */ int main() { float a,b,c,d,q,x1,x2; scanf("%f,%f,%f",&a,&b,&c); d = b*b-4*a*c; q = sqrt(d); if(d>0) { x1 = ((-1)*b+q)/2*a; x2 = ((-1)*b-q)/2*a; printf("x1=%f,x2=%f",x1,x2); }else if(d = 0) { x1 = (-1)*b/2*a; printf("x1=x2=%f",x1); }else { printf("没有实数根!"); } return 0; }
...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-10-10
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
/*

有两个不等的实根即d=b*b-4*a*c > 0

有两个相等的实根即d=b*b-4*a*c = 0

*/

int main()
{

float a,b,c,d,q,x1,x2;

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

d = b*b-4*a*c;
//q = sqrt(d);

if(d>0)
{
q = sqrt(d); //放在这里比较合适,不然d<=0时,调用sqrt不合适
x1 = ((-1)*b+q)/2*a;
x2 = ((-1)*b-q)/2*a;

printf("x1=%f,x2=%f",x1,x2);
//} else if(d = 0)
} else if(d == 0)
{
x1 = (-1)*b/2*a;
printf("x1=x2=%f",x1);
}else
{
printf("没有实数根!");
}

return 0;

}


供参考~
  • 打赏
  • 举报
回复
这一句应当在判断有实根后再执行。

q = sqrt(d);

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧