首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言二分法求根:代碼邏輯缺陷與編譯錯誤排查

     編輯:程式設計綜合問答

報錯代碼

0xC000013A 為 `STATUS_CONTROL_C_EXIT`,通常因控制台關閉或運行環境問題,非代碼邏輯錯誤。但代碼存在明顯缺陷:

  1. 缺少 `` 導致 `fabs` 隱式宣告(C99 後不允許)。
  2. 方程式 `f = x*(2*x*(x-4)+3)-6` 中常數 `2` 來源不明,疑為抄寫錯誤。
  3. 未輸出最終根值 x,僅印 x0。

修正版

#include <stdio.h>
#include <math.h>

int main() {
    double x, x0 = -10, x1 = 10;
    double f, f0, f1;
    // 確認區間端點異號
    f0 = x0*(2*x0*(x0-4)+3)-6;
    f1 = x1*(2*x1*(x1-4)+3)-6;
    if (f0 * f1 > 0) { printf("區間無根或根數為偶數\\n"); return 1; }

    while (fabs(x1 - x0) >= 1e-6) {
        x = (x0 + x1) / 2;
        f = x*(2*x*(x-4)+3)-6;
        if (f * f0 > 0) { x0 = x; f0 = f; }
        else { x1 = x; f1 = f; }
    }
    printf("Root ≈ %.6f\\n", x);
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved