輸入三條邊長,判斷能否構成三角形,若能再判斷是否為直角三角形。
#includeint 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:
*
**
***
****
*****
*/
判別式 Δ = 0 → (2b)² - 4(a+c)(a-c) = 0 → a² = b² + c² → **直角三角形**(a 為斜邊)。
Δ = 0 → (a-b)² - (a-c)(a+c-2b) = 0 → 化簡得 (b-c)² = 0 → b = c → **等腰三角形**。
判斷直角三角形 = **三角形不等式** + **勾股定理**。掌握邏輯表達式優先級(`&&` > `||`)、防溢出技巧、浮點數比較規範,能應對從入門到競賽的各類變體。數學推導題鍵在於**判別式 Δ = 0** 與**邊長關係方程**的轉化。