C程序!!计算一元2次方程的根!!

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:12:40
包括虚根的情况
计算一元二次方程的两个根:
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,x1,x2,m,n,s;
char o='i';
printf("Input a,b,c\n");
scanf("%f%f%f",&a,&b,&c);
while(a==0)
{
printf("error input,please input again\n");
scanf("%f%f%f",&a,&b,&c);
}
m=-b/(2*a),s=b*b-4*a*c;
if(s>0)
{
n=sqrt(s);
x1=m+n/(2*a),x2=m-n/(2*a);
}
else if(s==0)
x1=x2=m;
else
{
n=sqrt(-s);
x1=m+n/(2*a)o,x2=m-n/(2*a)o;
}
printf("x1=%7.2f,x2=%7.2f\n",x1,x2);
}
这样为什么不可以呢?错在哪?
那正确的编写方式是什么??

我也刚学C,费了好几个小时,终于把这个问题搞定了!
已经运行过了,结果跟谭版结果一样,敬请放心使用。
#include "stdio.h"
#include "math.h"
void main()
{ double a,b,c,x1,x2,disc,p,q;
printf("please input a,b,c:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
if (fabs(a)<1e-6)
printf("The equation is not a quadratic");
else
{ disc=b*b-4*a*c;
if (disc<0)
{
p=-b/(2*a);
q=sqrt(-disc)/(2*a);
printf("The equation has two complex roots:\n");
printf ("%8.4f+%8.4f i\n",p,q);
printf ("%8.4f-%8.4f i\n",p,q);
}
else
if (fabs(disc)<1e-6)
printf("the equation has two equal roots:%8.4f\n",-b/(2*a));
else
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("The equation has distinct real roots:%8.4f and %8.4f\n",x1,x2);
}
}
}

JAVA

x1