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

C語言判斷直角三角形:邏輯表達式與邊長關係完全指南

     編輯:關於C語言

題目描述

輸入三條邊長,判斷能否構成三角形,若能再判斷是否為直角三角形。

  • 能構成直角三角形 → 輸出 `Yes!`
  • 能構成三角形但非直角 → 輸出 `No!`
  • 不能構成三角形 → 輸出 `Error!`

核心邏輯

  1. **三角形不等式**:任意兩邊之和 > 第三邊
    `a+b>c && a+c>b && b+c>a`
  2. **勾股定理**:兩直角邊平方和 = 斜邊平方
    `a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a`

標準實現

#include 

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    
    if (a + b > c && a + c > b && b + c > a) {
        if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
            printf("Yes!\n");
        else
            printf("No!\n");
    } else {
        printf("Error!\n");
    }
    return 0;
}

進階:打印直角三角形圖案(另一常見題目)

// 輸入行數 n,打印 n 行直角三角形
void print_right_triangle(int n) {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++)
            putchar('*');
        putchar('\n');
    }
}
/*
輸入 5:
*
**
***
****
*****
*/

數學擴展題解析

題 1:一元二次方程 (a+c)x² + 2bx + (a-c) = 0 有兩相等實根,判斷 a,b,c 為邊的三角形形狀

判別式 Δ = 0 → (2b)² - 4(a+c)(a-c) = 0 → a² = b² + c² → **直角三角形**(a 為斜邊)。

題 2:方程 (a-c)x² - 2(a-b)x + (a+c-2b) = 0 有兩相等實根,證明三角形等腰

Δ = 0 → (a-b)² - (a-c)(a+c-2b) = 0 → 化簡得 (b-c)² = 0 → b = c → **等腰三角形**。

常見錯誤

  • ❌ 未先判斷能否構成三角形,直接判斷勾股定理
  • ❌ 邊長溢出:`a*a` 可能超出 `int`,建議用 `long long`
  • ❌ 浮點數邊長直接 `==` 比較,需引入誤差 `fabs(x-y) < 1e-9`

總結

判斷直角三角形 = **三角形不等式** + **勾股定理**。掌握邏輯表達式優先級(`&&` > `||`)、防溢出技巧、浮點數比較規範,能應對從入門到競賽的各類變體。數學推導題鍵在於**判別式 Δ = 0** 與**邊長關係方程**的轉化。

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