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

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

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

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

 

  1. 无解情况

 

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

 2.只有一个根的情况

 

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

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

重点就是这个部分。

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

    (1)sqrt(delta)是整数时

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

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

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

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

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

对,保留根号!

 

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

转载于:https://www.cnblogs.com/joyceX/p/4004899.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值