C语言一元二次方程的解

来源:百度知道 编辑:UC知道 时间:2024/06/30 23:20:59
//最后一次else后面怎么写啊?看不懂什么实根虚根……
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
void main()
{
float a,b,c,x1,x2,disc,realpart,imagpart;
printf("请输入三个数值\n");
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
if(a==0)
printf("该方程不是一元二次方程组\n");
else if(disc==0)
{
x1=(-b)/(2*a);
x2=(-b)/(2*a);
printf("x1=%.2f\tx2=%.2f\n",x1,x2);
}
else if(b*b-4*a*c>0)
{
x1=(-b)+sqrt(disc);
x2=(-b)-sqrt(disc);
printf("x1=%.2f\tx2=%.2f\n",x1,x2);
}
else

}
楼下的,你可以滚了。 big_big_stone,为什么要*i?我好像没有设变量i吧?

(1)当b²-4ac<0时,方程有没有实根,
所以最后一个else这么写

else
{
printf("b²-4ac<0,该方程没有实根\n",x1,x2);
}
(2)当b²-4ac<0时,方程有虚根,
所以最后一个else这么写

else
{
realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);
printf("x1=%.2f+%.2fi\tx2=%.2f-%.2fi\n",realpart,imagpart,realpart,imagpart);
}

还有你的两不同实根部分忘了除以(2*a)了

呵呵.你是初中生啊.那就不要弄它了.同学.

{
x1=-b+(sqrt(-disc))*i;
x2=-b-(sqrt(-disc))*i;
}

当当b²-4ac<0时,方程有没有实根,
所以最后一个else这么写

else
{
printf("b²-4ac<0,该方程没有实根\n",x1,x2);
}