作业帮 > 综合 > 作业

我的这个求一元二次方程根的C程序错在哪里呀?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 23:34:43
我的这个求一元二次方程根的C程序错在哪里呀?
#include
#include
void main()
{
float a,b,c,disc;
double p,q,x,x1,x2,m;
printf("请输入a,b,c的值:\n");
scanf("%f %f %f",&a,&b,&c);
if(a=0)
{
x=-c/b;
printf("方程为一次,有一个实根:x=%.2f\n",x);
}
else
{
disc=b*b-(4*a*c);
p=-b/(2*a);
m=fabs(disc);
q=sqrt(m)/(2*a);
if(disc==0)
{
x=p;
printf("方程为二次,有一个实根:x=%.2f\n",x);
}
else
{ if(disc>0)
{
x1=p+q;
x2=p-q;
printf("方程为二次,有两实根:x1=%.2f x2=%.2f\n",x1,x2);
}
else
printf("方程为二次,有两虚根:x1=%.2f+%.2fi,x2=%.2f+%.2fi\n",p,q,p,q);
}
}
}
我的这个求一元二次方程根的C程序错在哪里呀?
可以看出来,你对if嵌套的运用十分纯熟,在if -else if -else 语句还有所欠缺哦
哈哈 还有注意=与==要区别开 前者是赋值 后面的是"等于" 嗯都是细节问题 希望你多加注意啊
修改后代码:(VC6.0下运行良好,达到求解目的)
#include
#include
void main()
{
float a,b,c,disc;
double p,q,x,x1,x2,m;
printf("请输入a,b,c的值:\n");
scanf("%f %f %f",&a,&b,&c);
disc=b*b-(4*a*c);
p=-b/(2*a);
m=fabs(disc);
q=sqrt(m)/(2*a);
if(a==0)/*你的是=号哦*/
{
x=-c/b;
printf("方程为一次,有一个实根:x=%.2f\n",x);
}
else
{
if(disc==0)
{
x=p;
printf("方程为二次,有一个实根:x=%.2f\n",x );
}

else if(disc>0)/*你的是if*/
{
x1=p+q;
x2=p-q;
printf("方程为二次,有两实根:\nx1=%.2f \n x2=%.2f\n",x1,x2);
}
else
printf("方程为二次,有两虚根:x1=%.2f+%.2fi,x2=%.2f+%.2fi\n",p,q,p,q);
}
}