满意答案
chen19860921
推荐于 2017.10.13
采纳率:59% 等级:12
已帮助:11887人
错误:if((b*b==4*a*c),将if后边的括号去掉一个;
这样之后,程序在VC6下编译通过,不过运行有错,必须要对float变量初始化一下,不然会全部是零;修改如下:
#include
#include
void main()
{
float a=1.111,b=0.0,c=0.0,d=0.0,q=0.0;//x1,x2,d,q,w,r;
printf("Please input the three coefficients:");
fflush(stdin);
scanf(" %f",&a);
scanf(" %f",&b);
scanf(" %f",&c);
printf("%fx*x+%fx+%f=0 \n",a,b,c);
d=sqrt(b*b-4*a*c);
if(b*b==4*a*c)
{
q=(-b)/2/a;
printf("x1=x2=q\n",b,a);
}
else if(b*b>4*a*c)
{
//printf("w=(-%f+%f)/2/%f,r=(-%d-%d)/2/%d\n",b,d,a,b,d,a);
printf("x1=%f \n x2=%f \n",(-b+sqrt(b*b-4*a*c))/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a));
}
else
printf("There is no real root.\n");
}
你后边那个问题,其实如果近似解的话,可以照我上边写法,如果一定要是分数,7/8/2可以写成7/(8*2),也就是将w=(-%f+%f)/2/%f改成:w=(-%f+%f)/(2*%f);
试试喽;
00分享举报