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请问哪里出错了?
展开
3个回答
展开全部
#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);
}
}
你输入的那个方程根本就没有根,这个你需要加一个判断条件,这样才能正确处理求根公式
展开全部
你的scanf里有非格式字符,应该这样输入a=1,b=2,c=3才对,否则出错,还有你的q就不需要除以2a了,直接开方就行了,因为你的p已经开方了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |