C语言 求解一元二次方程
2015-03-25 20:47
411 查看
求方程a^2+b*x+c=0的解。
a=0,不是一元二次方程;
b^2-4ac=0,有两相等的实根;x1=x2=-2a/b;
b^2-4ac>0,有两不等的实根;
p=-b/2a,q=sqrt(b^2-4ac)/2a;x1=p+q,x2=p-q;
b^2-4ac<0,有两个共轭复根;
p=-b/2a,q=sqrt(4ac-b^2)/2a;x1=p+qi,x2=p-qi
/*这是为了判断浮点数相等,由于计算机保存的浮点数是2进制的,在精度上有一定的偏差。
if (disc == 0.0) 时,disc不一定精确地等于0,也许会等于0.000001。为了避免浮点数比
较上的误差,就要设定一个误差范围,也就是(-1e-6, 1e-6)这个范围内,如果disc落在这
个范围内,就认为其等于0了*/
运行结果截图:
a=0,不是一元二次方程;
b^2-4ac=0,有两相等的实根;x1=x2=-2a/b;
b^2-4ac>0,有两不等的实根;
p=-b/2a,q=sqrt(b^2-4ac)/2a;x1=p+q,x2=p-q;
b^2-4ac<0,有两个共轭复根;
p=-b/2a,q=sqrt(4ac-b^2)/2a;x1=p+qi,x2=p-qi
#include <stdio.h> #include <math.h> int main() { double a,b,c,disc,x1,x2,p,q; printf("请输入函数的系数a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); if(fabs(a)<=1e-6) //fabs(a)<=1e-6等价于|a|<1*10^(-6); printf("不是一元二次方程\n"); else { disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("方程有两个相等的实根:\nx1=x2 = %.4f\n",-b/(2*a)); else if(disc>1e-6) { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("方程有两个不等的实根:\nx1 = %.4f\nx2 = %.4f\n",x1,x2); } else { p=-b/(2*a); //r为复数的实部; q=sqrt(-disc)/(2*a); //i为复数的虚部; printf("方程有两个共轭复根:\nx1 = %.4f+%.4fi\nx2 = %.4f-%.4fi\n",p,q,p,q); } } return 0; }
/*这是为了判断浮点数相等,由于计算机保存的浮点数是2进制的,在精度上有一定的偏差。
if (disc == 0.0) 时,disc不一定精确地等于0,也许会等于0.000001。为了避免浮点数比
较上的误差,就要设定一个误差范围,也就是(-1e-6, 1e-6)这个范围内,如果disc落在这
个范围内,就认为其等于0了*/
运行结果截图:
相关文章推荐
- 运用C语言求解一元二次方程
- 用C求解一元二次方程的解,遇到的问题及解决办法 分类: C语言 2012-03-13 00:26 3094人阅读 评论(0) 收藏
- 用c语言求解一元二次方程
- 用c语言求解一元二次方程
- C语言实现一元二次方程的求解
- c语言求解一元二次方程
- C语言求解一元二次方程
- c语言求解一元二次方程
- C语言简单编程之一元二次方程求解
- c语言求解一元二次方程
- 利用C语言求解一元二次方程组的解
- C语言 一元二次方程解的判定及浮点数大小的比较
- C语言进阶-第6讲:递归法问题求解(递归求数组的最大值)
- 【C语言】最长子序列问题求解
- 已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)
- ai1835-宇航员 C语言 暴力求解
- 追赶法求解方程组(C语言)
- C语言实验——一元二次方程Ⅰ
- 一元二次方程求解
- 编程:求解一元二次方程的根