C语言编程 解一元二次方程
发布网友
发布时间:2022-05-02 17:35
我来回答
共2个回答
热心网友
时间:2022-06-21 02:07
M宏不需要开方,delta只是b*b-4*a*c,如果它大于等于0,再开方才有意义.变量也应该使用浮点数类型,修改如下:
//---------------------------------------------------------------------------
#include<stdio.h>
#include<math.h>
#define M (b*b-4*a*c) /*注意这里*/
main()
{double a,b,c,x1,x2; /*注意这里*/
printf("请输入方程的三个系数:");
scanf("%lf,%lf,%lf",&a,&b,&c); /*注意这里*/
if (M>0)
{ x1=(-b+sqrt(M))/(2*a); /*注意这里*/
x2=(-b-sqrt(M))/(2*a); /*注意这里*/
printf("方程的两个根是:\nx1=%lf,x2=%lf\n",x1,x2);/*注意这里*/
}
else if (M==0)
{ x1=-b/(2*a);
printf("方程具有两个相等的实根:x1=x2=%lf\n",x1); /*注意这里*/
}
else
printf("输入错误,请重新输入\n");
}
//---------------------------------------------------------------------------
热心网友
时间:2022-06-21 02:08
#include<stdio.h>
main()
{int a,b,c,x1,x2,M,n;
printf("请输入方程的三个系数:");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);n=a*c;
M=b*b-4*n;
printf("%d\n",M);if (M>0)
{ x1=(-b+M)/(2*a);
x2=(-b-M)/(2*a);
printf("方程的两个根是:\nx1=%d,x2=%d\n",x1,x2);
}
else if (M==0)
{ x1=-b/(2*a);
printf("方程具有两个相等的实根:x1=x2=%d\n",x1);
}
else
printf("输入错误,请重新输入\n");
}