二次函数问题(C++)
#include <stdio.h>#include <stdlib.h>
#include <math.h>
int main()
{
float a,b,c,disc,q,p,z,j,x1,x2,u,i;
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
z=x1+x2;
j=x1*x2;
u=-b/(2*a);
i=(4*a*c-b*b)/(4*a);
if (a==0){
printf("此程序只支持二次函数,请不要乱来!\n");
}
else {
if (disc>0){
printf("此方程无实数根\n");
}
else {{
printf("与X轴交点为%f,%f\n",x1,x2);
printf("与y轴交点为%f\n",c);
printf("顶点坐标为(%f,%f)\n",u,i);
printf("对称轴为%f\n",u);
printf("x1+x2=%f\nx1*x2=%f\n",z,j);
}
if (a>0){
printf("开口方向向上\n");
printf("最小值为%f\n",i);
}
else {
printf("开口方向向下\n");
printf("最大值为%f\n",i);}
}
}
system("pause");
return 0;
}
编译过了,但是输出的数据基本上是0.000000和-1.#IND00 怎么回事啊?
不管输入任何值 只要a不等于0都是输出一样的数据
还有如果我if (disc>0)改成小于号就不管输入什么数只要a不等于0都是执行
printf("此方程无实数根\n");
求教啊!!!!!!
追问:这样不行 早试过了输出的东西都有问题