码迷,mamicode.com
首页 > 编程语言 > 详细

C语言写解一元二次方程程序心得

时间:2014-10-03 14:28:04      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   ar   sp   div   2014   

前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍。

首先,先回忆一下一元二次方程的求根公式:

bubuko.com,布布扣

  1. 分别读取二次项、一次项和常数项系数并且求出delta

bubuko.com,布布扣

 

  1. 无解情况

 

bubuko.com,布布扣

此时同时输出delta的值,小于0,无解。

 

  1. 只有一个根的情况

bubuko.com,布布扣

当delta等于0,只有一个实数根,没什么好讲。

 

  1. 两个不相等实根的情况

    重点就是这个部分。

    为了避免一大堆小数的问题,分开sqrt(delta)是整数和非整数来。(如果是整数,则直接运算,如果不是整数,则保留根号)

    (1)sqrt(delta)是整数时

现在涉及一个问题就是如何判断整数

bubuko.com,布布扣

此处为了避免互相干扰,用了两个变量,sqr用于判断是否为整数,如果是整数,则用sqr1

如何判断是否为整数呢?这里可以利用int形和double形的性质。采用判断(int)sqr和 (int)(sqr + 0.9999999)的大小来判断sqr是不是整数。[double形一般精确到小数点后6 位,所以这里用了7个9]。然后强制转换成int型,如果为整数,(int)(sqr + 0.9999999)不会进位,x=y。不是整数,反之。

然后如果为整数,先计算sqrt(delta)后代入计算。

bubuko.com,布布扣

(2)sqrt(delta)不是整数时

bubuko.com,布布扣

对,保留根号!

 

后记:写这一段小程序最初是为繁多的坑爹的解方程数学题所恼,想快点完成作业~~于是在那个月黑风高的晚上写完作业后顺便把这篇文章写了。

C语言写解一元二次方程程序心得

标签:style   blog   http   color   使用   ar   sp   div   2014   

原文地址:http://www.cnblogs.com/joyceX/p/4004899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!