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

C語言入門練習:海倫公式計算三角形面積(含常見錯誤修正)

     編輯:關於C語言

C語言入門練習:海倫公式計算三角形面積(含常見錯誤修正)

本程式讀入三角形三邊長,使用海倫公式計算面積。原始碼存在公式錯誤(半周長計算錯誤),本文提供修正版並詳細解析。

海倫公式

三角形三邊 a, b, c,半周長 s = (a+b+c)/2,面積 A = √[s(s-a)(s-b)(s-c)]。

原始碼錯誤分析

// 原始錯誤碼
s = 1.0/2 * (a * b * c);  // ❌ 錯誤:這是體積相關公式,非半周長
area = sqrt(s * (s-a) * (s-b) * (s-c));

1.0/2 * (a*b*c) 計算的是邊長乘積的一半,完全錯誤。

修正版完整程式碼

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

int main() {
    float a, b, c, s, area;

    printf("請輸入三角形三邊長:");
    if (scanf("%f %f %f", &a, &b, &c) != 3) {
        fprintf(stderr, "輸入錯誤\n");
        return 1;
    }

    // 三角形不等式檢查
    if (a + b <= c || a + c <= b || b + c <= a) {
        printf("無法構成三角形(任意兩邊之和必須大於第三邊)\n");
        return 1;
    }

    s = (a + b + c) / 2.0f; // 正確半周長
    area = sqrtf(s * (s - a) * (s - b) * (s - c));

    printf("a = %.2f, b = %.2f, c = %.2f\n", a, b, c);
    printf("半周長 s = %.2f\n", s);
    printf("面積 = %.2f\n", area);

    return 0;
}

關鍵修正點

  1. 半周長公式:s = (a+b+c)/2
  2. 三角形合法性檢查:任意兩邊之和 > 第三邊
  3. 使用 sqrtf:單精度版本,匹配 float 變數
  4. 輸入驗證:檢查 scanf 返回值
  5. 格式化輸出:%.2f 保留兩位小數

延伸思考

  • 若輸入為整數,面積可能為無理數,float 精度足夠一般用途
  • 極大邊長可能導致 s*(s-a)... 溢位,可用 double 或對數運算規避
  • 海倫公式數值穩定性在針狀三角形(兩邊和接近第三邊)較差,可改用 0.25 * sqrt((a+b+c)(-a+b+c)(a-b+c)(a+b-c)) 形式

這個簡單練習包含「公式正確性、邊界檢查、資料類型選擇、輸入驗證」四大工程實務要素,是優質入門題目。

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