輸入三角形三邊長 a、b、c(實數),判斷能否構成三角形。若能,使用海倫公式計算面積;否則輸出 "No Triangle!"。
正確條件:任意兩邊之和大於第三邊,即:
a + b > c && a + c > b && b + c > a
原始碼錯誤:使用了 ||(邏輯或),導致只要滿足一個條件就判定為三角形,這是錯誤的。
半周長 s = (a + b + c) / 2
面積 Area = √[s(s-a)(s-b)(s-c)]
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c;
float s, area;
printf("請輸入三角形三邊長 (實數) a, b, c:\n");
scanf("%f %f %f", &a, &b, &c);
// 正確的三角形判定:必須同時滿足三個條件
if((a + b > c) && (a + c > b) && (b + c > a)) {
s = (a + b + c) / 2;
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("該三角形的面積: %.4f\n", area);
} else {
printf("No Triangle!\n");
}
return 0;
}
| 輸入 | 輸出 | 說明 |
|---|---|---|
| 3 4 5 | 面積: 6.0000 | 直角三角形 |
| 1 1 3 | No Triangle! | 1+1 < 3,無法構成 |
| 5 5 5 | 面積: 10.8253 | 正三角形 |
|| 而非 &&math.h 導致 sqrt 未聲明N0 Trigale! 應為 No Triangle!