用C语言编写,求算术平方根ax²+bx+c+0的根。分别考虑有两个不等的实根,有两个相等的实根。

主要是算法,是在没分了..
ax²+bx+c=0...

#include "stdio.h"
#include "math.h"
void main()
{
double a,b,c,d,x1,x2,realpart,imagpart;
printf("请输入a,b,c的值:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
printf("方程的根:\n");
if(a==0)
{
printf("这不是一个一元二次方程。\n");
return;
}
else
d=b*b-4*a*c;

if(fabs(d)<=1e-6)/*
fabs是求实数绝对值的函数,由于d是一个实数,计算机在计算和存储时可能存在误差,所以当d是一个很小的数时,就认为他是0 */

printf("方程有两个相同的根:%8.4f\n",-b/(2*a));
else if(fabs(d)>1e-6)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("方程有两个不相同的实根:%8.4f和%8.4f\n",x1,x2);

}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-d)/(2*a);
printf("方程有两个复根:\n");
printf("%8.4f+%8.4fi\n",realpart,fabs(imagpart));
printf("%8.4f-%8.4fi\n",realpart,fabs(imagpart));
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-18
#include "stdio.h"
#include "math.h"

/*求一元二次方程ax*x+bx+c=0的解*/
main()
{
float a,b,c,x1,x2,d;
printf("请输入a:");
scanf("%f",&a);
printf("请输入b:");
scanf("%f",&b);
printf("请输入c:");
scanf("%f",&c);
d=b*b-4*a*c;

if(d < 0)
printf("方程没有实数解。\n");

if (d==0)
{
x1=(-b)/(2*a);
printf("x1=%f\n",x1);
}
if (d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);}
}追问

有点看不明白你的..

相似回答