求ax^2+bx+c=0方程的根。a,b,c由键盘输入,设b^2-4ac>0

#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%1f%1f%1f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0;

}

我按书上的操作,为什么 会出现这样的乱码? (正确的答案 是x1= -1.00 x2= -2.00)

如下:

#include<stdio.h>

#include<math.h>

disc=b*b-4*a*c;
p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);
x1=p+q;

x2=p-q;

printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0。


扩展资料:

1、去分母:方程两边同时乘各分母的最小公倍数

2、去括号:一般先去小括号,再去中括号,最后去大括号。但顺序有时可依据情况而定使计算简便。可根据乘法分配律

3、移项:把方程中含有未知数的项移到方程的另一边,其余各项移到方程的另一边移项时别忘了要变号。(一般都是这样:(比方)从 5x=4x+8 得到 5x - 4x=8 ;把未知数移到一起!

4、合并同类项:将原方程化为ax=b(a≠0)的形式。

5、化系数为一:方程两边同时除以未知数的系数。

6、得出方程的解。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-12
用float型就可以了,具体原因待查。

#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,disc,x1,x2,p,q;
disc=0;
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0;
}追问

我试了下 用 float 确实可以了 ,不过 我还是想不通,double 不是精度问题吗,为啥用double 会出现乱码?

本回答被提问者和网友采纳
相似回答