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)不是整數時

對,保留根號!

 

后記:寫這一段小程序最初是為繁多的坑爹的解方程數學題所惱,想快點完成作業~~於是在那個月黑風高的晚上寫完作業后順便把這篇文章寫了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM