东营市城镇化率:这个小程序有什么问题呀

来源:百度文库 编辑:中科新闻网 时间:2024/04/24 00:51:40
#include<math.h>
main()
{
float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f,&a,&B,&c");
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a)
x1=p+q; x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
用来求一元二次方程的解

没考虑disc小于零件的情况,那样的话程序就会出错。

scanf("a=%f,b=%f,c=%f,&a,&B,&c");
这句应该改成:
scanf("a=%f,b=%f,c=%f",&a,&b,&c);

一楼和三楼的老兄都说得对~
一楼老兄指出的变量disc没有考虑到的disc>0时的情况,这种情况下,函数Sqrt要给一个负数开方这是不可能所以系统会报错,再是在这种情下,这个一无二次方程是没解的~
三楼老兄提出的是个人编程习惯上的错误,只要做到细心就可以杜绝这类错误~~