level 7
鸢-纶
楼主
请教各位大佬,我编的一元二次方程程序,算法哪里出问题了,有的可以算对有有的就是错的,像下图中的,答案就是错的。
# include <stdio.h>
# include <math.h>
/*<math.h>里面包含了特殊的数学符号,像sprt代表了√*/
int main (void)
{
double a, b, c;
double delta;
double x1;
double x2;
int d;
do
{
printf ("请按顺序输入一元二次方程的二次项系数,一次项系数,常数项,中间以空格隔开,输入完毕请按回车,谢谢配合,不配合也没关系反正又不是我在解方程。\n");
scanf ("%lf %lf %lf",&a,&b,&c);
delta = (b*b)-(4.0*a*c);
if (delta>0)
{
x1=(-b + sqrt(delta)) / 2.0*a;
x2=(-b - sqrt(delta)) / 2.0*a;
printf
("该方程有两个解,%lf,%lf\n",x1,x2);
}
else if (delta == 0)
{
x1=-b/(2.0*a);
x2=x1;
printf
("该方程有唯一解,x1=x2=%lf\n",x1=x2);
}
else
{
printf ("该方程无解\n");
}
printf
("输入0结束,输入任意数字继续");
scanf ("%d",&d);
} while (d);
return 0;
}

2017年08月22日 04点08分
1
# include <stdio.h>
# include <math.h>
/*<math.h>里面包含了特殊的数学符号,像sprt代表了√*/
int main (void)
{
double a, b, c;
double delta;
double x1;
double x2;
int d;
do
{
printf ("请按顺序输入一元二次方程的二次项系数,一次项系数,常数项,中间以空格隔开,输入完毕请按回车,谢谢配合,不配合也没关系反正又不是我在解方程。\n");
scanf ("%lf %lf %lf",&a,&b,&c);
delta = (b*b)-(4.0*a*c);
if (delta>0)
{
x1=(-b + sqrt(delta)) / 2.0*a;
x2=(-b - sqrt(delta)) / 2.0*a;
printf
("该方程有两个解,%lf,%lf\n",x1,x2);
}
else if (delta == 0)
{
x1=-b/(2.0*a);
x2=x1;
printf
("该方程有唯一解,x1=x2=%lf\n",x1=x2);
}
else
{
printf ("该方程无解\n");
}
printf
("输入0结束,输入任意数字继续");
scanf ("%d",&d);
} while (d);
return 0;
}
