c语言一元二次方程,恳求高手指点。

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:15:19
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c;
double x1,x2,x,d;
scanf("%d,%d,%d",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)
printf("此方程无解");
else if(d=0)
{
x=(-b)/(2*a);
printf("此方程只有一个解x=%lf",x);
}
else
{
x1=(-b)+sqrt(d)/(2*a);
x2=(-b)-sqrt(d)/(2*a);
printf("此方程有两个解x1=%lf,x2=%lf",x1,x2);
}
}
为什么我输入1,-4,3 显示“此方程有两个x1=4.0000,x2=4.0000?两个结果都是错的呢?

错了两个地方
方程只有一个解的地方改成d==0;
然后有两个解的地方。X1=((-b)+sqrt(d)/(2*a))另一个也一样。
其他没问题。
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c;
double x1,x2,x,d;
scanf("%d,%d,%d",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)
printf("此方程无解");
else if(d==0)
{
x=(-b)/(2*a);
printf("此方程只有一个解x=%lf",x);
}
else
{
x1=((-b)+sqrt(d))/(2*a);
x2=((-b)-sqrt(d))/(2*a);
printf("此方程有两个解x1=%lf,x2=%lf",x1,x2);
}
}
我运行了下。没有问题。输入1,-4,3输出1,3

#include <stdio.h>
#include <math.h>
void main()
{

int a,b,c;
double x1,x2,x,d;
scanf("%d %d %d",&a,&b,&c); //连续接受输入,要空格,不是','
d=b*b-4*a*c;
if(d<0)
printf("此方程无解");
else if(d==0.0) //'='改成'=='
{
x=(-b)/(2*a);
printf("此方程