You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言三角形类型判断函数实现求助(仅输入两个内角)

问题分析与修正代码

原代码的核心问题

  • 判断顺序错误:直角等腰三角形的判断分支在普通直角、等腰分支之后,导致这类情况会被前面的分支优先捕获(比如输入45、45时,会先触发直角判断返回1,永远到不了返回3的分支)。
  • 合法性检查滞后:num1 + num2 >= 180的非三角形判断放在了类型判断之后,不符合逻辑——如果连三角形都不是,无需判断类型。
  • 逻辑冗余:第三个分支的条件是前两个分支的交集,但由于顺序问题完全无法被执行。

修正后的代码

int TriangleType(unsigned num1, unsigned num2) {
    int result;
    // 先判断是否为有效三角形
    if (num1 + num2 >= 180) {
        result = -1;
    } 
    // 优先判断既是直角又是等腰的情况
    else if ((num1 == 90 && num2 == 45) || (num2 == 90 && num1 == 45) || (num1 == num2 && num1 + num2 == 90)) {
        result = 3;
    } 
    // 再判断普通直角三角形
    else if (num1 == 90 || num2 == 90 || num1 + num2 == 90) {
        result = 1;
    } 
    // 然后判断普通等腰三角形
    else if (num1 == num2 || (180 - num1 - num2) == num1 || (180 - num1 - num2) == num2) {
        result = 2;
    } 
    // 其他不符合上述类型的情况
    else {
        result = 0;
    }
    return result;
}

关键修正说明

  1. 调整判断优先级:把合法性检查放在最前端,再优先处理直角等腰的特殊组合,最后依次判断普通直角、普通等腰,确保每个场景都能被正确捕获。
  2. 简化特殊场景判断:直接枚举直角等腰三角形的所有可能角度组合,逻辑更直观,避免复杂的条件交集运算。
  3. 移除无效分支:原代码中永远无法触发的冗余分支被删除,减少逻辑混乱。

内容的提问来源于stack exchange,提问作者Gaash Shmilovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:45:33