c语言:求二次函数ax^2+bx+c=0的根

#includevoidmain(){floata,b,c,x1,x2,p,q,disc;printf("inputa,b,c\n");scanf("a=%f,b=%f,... #includevoid main(){ float a,b,c,x1,x2,p,q,disc; printf("input a,b,c\n"); 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("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}输入1,2,3,后,得到的答案是x1=-0.5,x2=-0.5请问哪里出错了? 展开
 我来答
操羽40
推荐于2017-12-16 · TA获得超过430个赞
知道小有建树答主
回答量:374
采纳率:100%
帮助的人:234万
展开全部
#include <stdio.h>
#include <math.h>
void main()
{    
    float a,b,c,x1,x2,p,q,disc;    
    printf("input a,b,c\n");    
    scanf("a=%f,b=%f,c=%f",&a,&b,&c);    
    disc=b*b-4*a*c;
    if (disc<0)
    {
        printf("没根\n");
    }
    else
    {
        p=-b/(2*a);    
        q=sqrt(disc)/(2*a);    
        x1=p+q;    
        x2=p-q;    
        printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
    }
}

你输入的那个方程根本就没有根,这个你需要加一个判断条件,这样才能正确处理求根公式

逐梦兮乐
2013-06-27 · TA获得超过6431个赞
知道大有可为答主
回答量:5151
采纳率:72%
帮助的人:1822万
展开全部
你的scanf里有非格式字符,应该这样输入a=1,b=2,c=3才对,否则出错,还有你的q就不需要除以2a了,直接开方就行了,因为你的p已经开方了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aarizs
2018-09-22
知道答主
回答量:5
采纳率:0%
帮助的人:4.1万
展开全部
#include <stdio.h>
int main(void)
{
double a,b,c,d,e;
double x1,x2;
printf("请输入ax^2+bx +c = 0中a,b,c的值");
scanf("%lf,%lf,%lf",&a,&b,&c);
e = b * b - 4 * a * c;
if (e<0) {
printf("无解,请重新输入\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
}
printf("输入正确,正在计算....\n");
d = sqrt(e);
x1 = (-b + d)/(2 * a);
x2 = (-b - d)/(2 * a);

printf("x1=%f\n",x1);
printf("x2=%f\n",x2);

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式