读书人

小弟我的一元二次方程求根代码

发布时间: 2012-09-15 19:09:28 作者: rapoo

我的一元二次方程求根代码

C/C++ code
#include "stdafx.h"#include "math.h"void main(){    void sq2(double a,double b,double c);    void sq1(double a,double b,double c);    void sq(double a,double b,double c);    double a,b,c;    scanf("a=%f,b=%f,c=%f",&a,&b,&c);    if (b*b-4*a*c>0)    {        sq2(a,b,c);    }    if (b*b-4*a*c==0)    {        sq1(a,b,c);    }    if (b*b-4*a*c<0)    {        sq(a,b,c);    }}void sq2(double a,double b,double c)  //while b^2-4ac>0{    double temp=sqrt(b*b-4*a*c);    printf("x1=%.2f,x2=%.2f\n\n",(-b+temp)/(2*a),(-b-temp)/(2*a));}void sq1(double a,double b,double c)  //while b^2-4ac=0{    double temp=sqrt(b*b-4*a*c);    printf("x1=x2=%.2f\n\n",(-b)/(2*a));}void sq(double a,double b,double c)  //while b^2-4ac<0{    double temp=sqrt(abs((int)(b*b-4*a*c)));    printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n\n",(-b)/(2*a),temp/(2*a),(-b)/(2*a),temp/(2*a));}


这是谭浩强《C程序设计》第三版第8章后面第2题的作业,要求用3个函数分别写好当b^2-4ac>0/=0/<0三种情况的求根函数,然后主函数调用。因此,我写了上述代码。

测试时,我用a=1,b=2,c=1输入测试,可是结果却是x1=-0.50+0.00i,x2=-0.50-0.00i,怎么会用了第三个函数的呢?
我就纳闷了,我不是设定了if,这里b^2-4ac=0不是调用第二个函数吗?显示应该是 x1=x2=-1才对啊。不知道问题出在哪里了,昨天晚上检查了半个晚上也没查出来。

[解决办法]
scanf("a=%f,b=%f,c=%f",&a,&b,&c);改成:scanf("%lf%lf%lf",&a,&b,&c);
或者把double 改成 float类型;
双精度输入要用%lf (l是小写的L)。

读书人网 >C语言

热点推荐