用C编ax*x+bx+c=0求解

来源:百度知道 编辑:UC知道 时间:2024/06/24 08:40:54
输入2,6,1时,结果不对,应该为 -0.1771 and -2.8229
程序如下:
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,disc,realpart,imagpart,x1,x2;
scanf("%lf,%lf,%lf",&a,&b,&c);
printf("The equation");
if(fabs(a)<=1e-6)
printf("it is not a quadratic\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("has two equal real roots:%8.4lf\n",-b/(2*a));
else
if(disc>1e-6)
{
x1=(-b+sqrt(disc)/(2*a));
x2=(-b-sqrt(disc)/(2*a));
printf("has distinct real roots:%8.4lf ang %8.4lf\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("has complex roots:\n");
printf("%8.4lf+%8.4lfi\n",realpart,imagpart);
printf("%8.4lf-%8.4lfi\n",realpart,

#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,disc,realpart,imagpart,x1,x2;
scanf("%lf,%lf,%lf",&a,&b,&c);
printf("The equation");
if(fabs(a)<=1e-6)
printf("it is not a quadratic\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("has two equal real roots:%8.4lf\n",-b/(2*a));
else
if(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);//这里括号错了
x2=(-b-sqrt(disc))/(2*a); //同上
printf("has distinct real roots:%8.4lf ang %8.4lf\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("has complex roots: