求助!!!判断ax^2+bx+c=0方程有几个解,如果有解则解出。系数a,b,c由键盘输入。

2025-01-08 04:01:49
推荐回答(2个)
回答1:

/*********
写成下面这样,条理不是更加清晰么
你的错误在于else的位置写错地方了,else和if应该是并列选择的关系,而不是嵌套的。

*********/

#include
#include

int main()
{
float a,b,c,x1,x2,p;
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;

if (p>0)
{
x1=(-b-p)/2*a;
x2=(-b-p)/2*a;
printf("x1=%.2f,x2=%.2f\n",x1,x2);
}
else if(p==0)

{
x1=-b/2*a;
printf("x1=x2=%.2f\n",x1);
}
else
printf("No answer.\n");
}

回答2:

修改之后的代码如下:
#include
main()
{
float a,b,c,x1,x2,p;
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;
if (p>=0)
{
p=sqrt(b*b-4*a*c);
if (p>0)
{
x1=(-b-p)/2*a;
x2=(-b-p)/2*a;
printf("x1=%.2f,x2=%.2f",x1,x2);
}
else x1=-b/2*a;
printf("x1=x2=%.2f",x1);
}
else printf("No answer");
}
你的第一个else是在if的里面,所以会出现你所描述的错误。建议你在编程的时候,注意格式的标准化,减少错误的发生。