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

C語言三角形面積計算:海倫公式實作與三角形不等式判斷

     編輯:關於C

題目需求

輸入三邊長 a, b, c(實數),判斷能否構成三角形。能則用海倫公式計算面積,否則輸出 No Triangle!。

關鍵邏輯錯誤提醒 ⚠️

原始碼判斷條件:

if ((a+b>c) || (a+c>b) || (b+c>a))  // 錯誤!應為 &&(且)

三角形不等式要求任意兩邊之和大於第三邊,三個條件必須同時成立,應用 && 而非 ||。

修正後的完整程式碼

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

int main()
{
    float a, b, c, t, area = 0;
    printf("請輸入三角形三邊長 a, b, c: ");
    scanf("%f %f %f", &a, &b, &c);

    // 正確判斷:三個條件皆須成立
    if (a+b>c && a+c>b && b+c>a) {
        t = (a + b + c) / 2.0;                    // 半周長
        area = sqrt(t * (t-a) * (t-b) * (t-c));   // 海倫公式
        printf("三角形面積: %.4f\n", area);
    } else {
        printf("No Triangle!\n");
    }
    return 0;
}

海倫公式數學原理

半周長 s = (a+b+c)/2,面積 A = √[s(s-a)(s-b)(s-c)]。
僅需三邊長,不需高度或角度,極適合程式計算。

數值穩定性考量

  • 極扁三角形(如 1, 1, 1.999999)會導致 (s-c) 極小,浮點誤差大
  • 改良公式:A = 0.25 * √[(a+(b+c))(c-(a-b))(c+(a-b))(a+(b-c))](Kahan 公式)
  • 生產環境建議使用 double 並檢查引數非負

測試案例

abc結果
345面積 6.0000(直角三角形)
113No Triangle!
222面積 1.7321(正三角形)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved