求一元二次方程的根

原创 2016年06月02日 10:44:11

判别一元二次方程ax^2+bx+c=0根的情况并求根。

分析:

(1)当b^2-4ac=0,方程有两个相等的实根,x1=x2=-b/2a。

(2)当b^2-4ac>0,方程有两个不相等的实根,x1=(-b+√(b^2-4ac))/(2a),x2=(-b-√(b^2-4ac))/(2a)。

(3)当b^2-4ac<0,方程有一组共轭复根。

需要注意:

(1)方程的根可能是小数,所以在定义变量时不能用整型,可以用浮点型或者double型。

(2)对于浮点变量与零值进行比较时,不能讲浮点变量用“==”或“!=”与任何数字进行比较。在其比较时采用&&(与)运算符。例如:

float d;

float z=0.0001;

if((d>-z)&&(d<z))...

(3)函数sqrt要引用头文件#include<math.h>,它只能对正数开平方。

程序代码如下:

#include<stdio.h>
#include<math.h>
#define ESP 0.000001
int main()
{
   float a,b,c;
   scanf("%f %f %f",&a,&b,&c);
   if((a<ESP)&&(a>-ESP))
   {
   printf("此方程不是一元二次方程\n");
   return 0;
   }
   else
   {
   float tmp=b*b-4*a*c;
   if((tmp<ESP)&&(tmp>-ESP))
   {
   printf("此方程有两个相等的实根\n");
   printf("x1=x2=%f\n",(-b)/(2*a));
   }
   else
   if(tmp>0.0)
   {
   printf("x1=%f\nx2=%f\n",((-b)+sqrt(tmp))/(2*a),((-b)-sqrt(tmp))/(2*a));
   }
   else
   {
   printf("此方程有一组共轭复根\n");
   }
   }
   return 0;
}


本文出自 “Stand out or Get out” 博客,请务必保留此出处http://jiazhenzhen.blog.51cto.com/10781724/1704989

相关文章推荐

VB 求一元二次方程的根

  • 2010年06月07日 13:56
  • 37KB
  • 下载

C求圆、梯形、三角形的面积和一元二次方程的根(实虚)

文件列表: circle.c circle.h display.c display.h equation.c equation.h main.c menu.c menu.h tra...

VB011-求一元二次方程的根

  • 2016年07月21日 22:52
  • 7KB
  • 下载

求一元二次方程的根

  • 2014年04月28日 20:34
  • 50B
  • 下载

Java--第13周实验--封装一个求一元二次方程根的类SquareEquation,要求考虑解方程的异常,再编写一个窗口类EquationFrame

Test类: /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights res...

分支-18. 求一元二次方程的根(20)

本题目要求一元二次方程 a*x2+b*x+c=0 的根,结果保留2位小数。输入格式:输入在一行中给出3个浮点系数a, b, c,中间用空格分开。输出格式:根据系数情况,输出不同结果:1)如果方程有两个...

求一元二次方程的根

题目来源: 本题目要求一元二次方程 a*x2+b*x+c=0 的根,结果保留2位小数。 输入格式: 输入在一行中给出3个浮点系数a, b, c,中间用空格分开。 输出格式: 根据系数情况,输出...

pat简单题:分支-18. 求一元二次方程的根

/************************* *pat分支-18. 求一元二次方程的根 *一元二次求解 ************************/ #include #includ...
  • iceyung
  • iceyung
  • 2015年04月11日 21:48
  • 1003
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求一元二次方程的根
举报原因:
原因补充:

(最多只允许输入30个字)