当前位置: 面试刷题>> 判断三角形 (经典算法题500道)


题目描述补充

题目:判断三角形的类型

给定三个正整数a、b、c,它们分别代表三角形的三条边长。请编写一个程序来判断由这三条边组成的三角形是什么类型。三角形可能的类型包括:

  1. 等边三角形:三边长度都相等。
  2. 等腰三角形:有两边长度相等。
  3. 直角三角形:满足勾股定理(即最长边的平方等于其他两边的平方和)。
  4. 一般三角形:不满足上述任何条件。

如果给定的三条边不能构成三角形(即不满足任意两边之和大于第三边的条件),则输出“不能构成三角形”。

示例代码

PHP示例

<?php
function determineTriangleType($a, $b, $c) {
    // 检查是否能构成三角形
    if ($a + $b <= $c || $a + $c <= $b || $b + $c <= $a) {
        return "不能构成三角形";
    }
    
    // 排序以简化后续的判断逻辑
    $sides = [$a, $b, $c];
    sort($sides);
    
    // 判断三角形类型
    if ($sides[0] == $sides[1] && $sides[1] == $sides[2]) {
        return "等边三角形";
    } elseif ($sides[0] == $sides[1] || $sides[1] == $sides[2]) {
        return "等腰三角形";
    } elseif ($sides[0]**2 + $sides[1]**2 == $sides[2]**2) {
        return "直角三角形";
    } else {
        return "一般三角形";
    }
}

// 测试
echo determineTriangleType(3, 4, 5);  // 直角三角形
echo "\n";
echo determineTriangleType(3, 3, 3);  // 等边三角形
echo "\n";
echo determineTriangleType(2, 2, 3);  // 等腰三角形
echo "\n";
echo determineTriangleType(1, 2, 3);  // 不能构成三角形
?>

Python示例

def determine_triangle_type(a, b, c):
    # 检查是否能构成三角形
    if a + b <= c or a + c <= b or b + c <= a:
        return "不能构成三角形"
    
    # 排序
    sides = sorted([a, b, c])
    
    # 判断三角形类型
    if sides[0] == sides[1] == sides[2]:
        return "等边三角形"
    elif sides[0] == sides[1] or sides[1] == sides[2]:
        return "等腰三角形"
    elif sides[0]**2 + sides[1]**2 == sides[2]**2:
        return "直角三角形"
    else:
        return "一般三角形"

# 测试
print(determine_triangle_type(3, 4, 5))  # 直角三角形
print(determine_triangle_type(3, 3, 3))  # 等边三角形
print(determine_triangle_type(2, 2, 3))  # 等腰三角形
print(determine_triangle_type(1, 2, 3))  # 不能构成三角形

JavaScript示例

function determineTriangleType(a, b, c) {
    // 检查是否能构成三角形
    if (a + b <= c || a + c <= b || b + c <= a) {
        return "不能构成三角形";
    }
    
    // 排序
    const sides = [a, b, c].sort((x, y) => x - y);
    
    // 判断三角形类型
    if (sides[0] === sides[1] && sides[1] === sides[2]) {
        return "等边三角形";
    } else if (sides[0] === sides[1] || sides[1] === sides[2]) {
        return "等腰三角形";
    } else if (sides[0]**2 + sides[1]**2 === sides[2]**2) {
        return "直角三角形";
    } else {
        return "一般三角形";
    }
}

// 测试
console.log(determineTriangleType(3, 4, 5));  // 直角三角形
console.log(determineTriangleType(3, 3, 3));  // 等边三角形
console.log(determineTriangleType(2, 2, 3));  // 等腰三角形
console.log(determineTriangleType(1, 2, 3));  // 不能构成三角形

码小课网站中有更多相关内容分享给大家学习,包括更深入的算法讲解、面试技巧等,欢迎大家访问学习。

推荐面试题