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

C语言实现三角形类型识别时运行结果与数学规则不符问题排查

C语言三角形类型识别代码错误修正方案

存在的核心问题

  • 初始化顺序错误:平方值A、B、C的计算放在了a、b、c用户输入之前,此时a、b、c为未初始化的随机垃圾值,计算结果完全不符合预期
  • 运算符误用:直角判断处的if(A=B+C)为赋值操作,并非相等判断,应改为==
  • 类型判定逻辑颠倒:数学规则为「最长边平方 > 其余两边平方和为钝角,<为锐角」,代码中写反了对应逻辑
  • 分支逻辑不互斥:三个判断分支没有关联,可能出现同时输出多个类型结果的问题
  • 缺少合法性校验:未先校验输入的三边是否能构成合法三角形

修正后可运行代码

#include <stdio.h>

int main()
{
    int a, b, c;
    int A, B, C;
    printf("请输入最长边长度\n");
    scanf("%d", &a);
    printf("请输入第二条边长度\n");
    scanf("%d", &b);
    printf("请输入第三条边长度\n");
    scanf("%d", &c);

    // 先校验是否为合法三角形
    if (a >= b + c || b >= a + c || c >= a + b) {
        printf("输入的三边无法构成合法三角形");
        return 0;
    }

    // 输入完成后再计算平方值
    A = a * a;
    B = b * b;
    C = c * c;

    // 互斥分支判断类型
    if (A == B + C) {
        printf("直角三角形");
    } else if (A > B + C) {
        printf("钝角三角形");
    } else {
        printf("锐角三角形");
    }

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:18:02