首页 新闻 会员 周边 捐助

求帮我看看代码,运行错误。。。。

0
悬赏园豆:5 [已解决问题] 解决于 2015-12-24 00:58

#include<stdio.h>

#include<math.h>

int main()

{

double a,b,c,d,e,f,m,n;

int N;

scanf("%d",&N);

while(N--)

{

scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if(d=0)
{e=(-b+sqrt(d))/(2*a);
printf("%.3lf",e);
}
if(d>0)
{e=(-b+sqrt(d))/(2*a);
f=(-b+sqrt(d))/(2*a);
printf("%.3lf %.3lf",e,f);
}
if(d<0)
{
m=(-b)/(2*a);
n=(sqrt(-d))/(2*a);
printf("%.3lf+%.3lf*i %.3lf-%.3lf*i",m,n,m,n);
}
}
return 0;
}

Akemo的主页 Akemo | 初学一级 | 园豆:110
提问于:2015-12-22 23:10
< >
分享
最佳答案
0

1、代码格式不规范,最严重的就是变量名要有意义!不要觉得能用就行。

2、d>0的情况

     

 e=(-b+sqrt(d))/(2*a);
 f=(-b+sqrt(d))/(2*a);     //改为: f=(-b-sqrt(d))/(2*a);

3、一元二次方程的复数解

若判别式△=b²-4ac<0,则方程无实根,虚数解为
x=(-b± i√(4ac-b²))/(2a)

4、建议:浮点数是不能精确确定它的值的,应该有一个容差范围。

收获园豆:5
lulipro | 菜鸟二级 |园豆:273 | 2015-12-23 11:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册