#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`。設最長邊為 c,依餘弦定理:
程式中直接比較平方和即可避免浮點運算與反三角函數。