• 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)不是整数时

    对,保留根号!

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

  • 相关阅读:
    RBO基于规则的优化器access paths优先级
    脚本:监控临时表空间使用率
    脚本:格式化的V$SQL_SHARED_CURSOR报告
    脚本:监控并行进程状态
    Oracle内部错误:ORA00600[25012]一例
    Trace obtained enqueue information by set event 10704
    Script:Translate RDBA relative data block address
    [Repost]List of X$ Tables
    Oracle学习笔记:oem手工管理
    Oracle学习笔记:redo重做日志
  • 原文地址:https://www.cnblogs.com/joyceX/p/4004899.html
Copyright © 2020-2023  润新知