首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言求解一元二次方程:輸出優化與整數根判斷技巧

     編輯:關於C語言

求根公式回顧

判別式 Δ = b² - 4ac。
Δ > 0:兩實根 x₁,₂ = (-b ± √Δ) / 2a
Δ = 0:一重根 x = -b / 2a
Δ < 0:無實根(可輸出虛根形式)

核心優化:保留根號輸出

若 √Δ 為整數,直接輸出數值;否則保留 sqrt(Δ) 符號,避免大量小數輸出。判斷整數技巧:

double sqr = sqrt(delta);
int x = (int)sqr;
int y = (int)(sqr + 0.9999999); // double 精度約 6 位小數
if (x == y) { // 是整數
    // 用整數 sqr1 = (int)sqr 參與運算
} else {
    // 輸出含根號格式
}

完整邏輯流程

  1. 輸入 a, b, c,計算 Δ。
  2. Δ < 0:輸出「無實根」。
  3. Δ = 0:輸出唯一根。
  4. Δ > 0:判斷 √Δ 是否整數,分支輸出。

代碼片段(關鍵部分)

if (delta > 0) {
    double sqr = sqrt(delta);
    if ((int)sqr == (int)(sqr + 0.9999999)) { // 整數根
        int sqr1 = (int)sqr;
        printf("x1=%d, x2=%d\n", (-b+sqr1)/(2*a), (-b-sqr1)/(2*a));
    } else { // 保留根號
        printf("x1=(-%d+√%.0f)/%d, x2=(-%d-√%.0f)/%d\n", b, delta, 2*a, b, delta, 2*a);
    }
}

心得

為解決作業中大量小數輸出不美觀問題而編寫,利用 double 精度特性判斷整數,保留根號表達式使結果更符合數學習慣。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved