关于C语言的一个题目

要编一个求二次方程的解的题目,我是这样编的(下文),检查时有几个错误,能帮我分析一下吗:
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,disc,p,q,x1,x2;
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/2*a;
q=(sqrt(disc))/2*a;
if(fab(a)<1e-6)
printf("此方程不是二次方程!\n");
else
{
if(fab(disc)<1e-6)
x1=q;
x2=q;
printf("x1=%f,x2=%f",x1,x2);
else
if(disc>1e-6)
{
x1=p+q;
x2=p-q;
printf("x1=%f,x2=%f",x1,x2);
}
else
{
printf("x1=%8.4f+%8.4fi\n",p,q);
printf("x2=%8.4f-%8.4fi\n",p,q);
}
}
return 0;
}
检查的错误:
C:\Users\Pro\Desktop\4.c(9) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
C:\Users\Pro\Desktop\4.c(10) : warning C4013: 'fab' undefined; assuming extern returning int
C:\Users\Pro\Desktop\4.c(18) : error C2181: illegal else without matching if
请帮忙分析下,谢谢

error:在第2个if(fab(disc)<1e-6)后面没有括号,到第二个赋值语句这句if就结束了,下面的else就没有相匹配的if了。

warning:

    赋值语句左右类型不一样

    找不到fab函数 的定义

追问

谢谢,还真是,可是编译时:
4.obj : error LNK2001: unresolved external symbol _fab
Debug/4.exe : fatal error LNK1120: 1 unresolved externals
你发的warning那两个怎么改呢??谢谢!谢谢!

追答

第一个warning不用管
第二个,fabs变成std::fabs

追问

不懂(@﹏@)~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-05
把fab改成fabs,if(fab(disc)<1e-6)下面加上{ }
相似回答