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

C 語言依三邊長判斷三角形類型完整指南

     編輯:關於C語言

判斷邏輯流程

  1. 合法性檢查:三邊皆為正數,且任意兩邊之和大於第三邊。
  2. 邊長分類:等邊、等腰、一般(不等邊)。
  3. 角度分類:利用餘弦定理判別直角、鈍角、銳角。

標準實作

#include 

int main() {
    int a, b, c;
    printf("請輸入三邊的長,並以逗號隔開:\n");
    scanf("%d,%d,%d", &a, &b, &c);

    /* 1. 合法性 */
    if (a <= 0 || b <= 0 || c <= 0) {
        printf("請輸入正數\n");
        return 1;
    }
    if (a > b + c || b > a + c || c > a + b) {
        printf("無法構成三角形\n");
        return 1;
    }

    /* 2. 邊長分類 */
    printf("按邊長來看:");
    if (a == b || a == c || b == c) {
        if (a == b && b == c)   /* 注意:a==b==c 在 C 中不等價於三邊相等 */
            printf("是等邊三角形\n");
        else
            printf("是等腰三角形\n");
    } else {
        printf("是一般三角形\n");
    }

    /* 3. 角度分類:平方比較避免浮點誤差 */
    printf("按角度來看:");
    long a2 = a*a, b2 = b*b, c2 = c*c;
    if (a2 == b2 + c2 || b2 == a2 + c2 || c2 == a2 + b2)
        printf("是直角三角形\n");
    else if (a2 > b2 + c2 || b2 > a2 + c2 || c2 > a2 + b2)
        printf("是鈍角三角形\n");
    else
        printf("是銳角三角形\n");

    return 0;
}

常見陷阱提醒

  • a == b == c 在 C 中會先算 `a == b` 得 0/1,再與 `c` 比較,務必改為 `a == b && b == c`。
  • 大數相乘可能溢位,建議用 `long long` 或先除以最大公約數縮放。
  • 輸入格式嚴格要求逗號分隔,實際專案建議用 `scanf("%d %d %d", ...)` 容忍空白。

數學原理補充

設最長邊為 c,依餘弦定理:

  • c² = a² + b² → cos C = 0 → 直角
  • c² > a² + b² → cos C < 0 → 鈍角
  • c² < a² + b² → cos C > 0 → 銳角

程式中直接比較平方和即可避免浮點運算與反三角函數。

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