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

CS50有效三角形判断代码编译报错问题求助

问题原因
  1. 核心错误是没有正确调用自定义函数:你在if判断中直接写函数名valid_triangle,此时它代表函数本身的内存地址(属于指针类型),和布尔值true(本质是整数1)做比较,不符合C语言语法规范,因此触发编译报错。
  2. 次要可优化点:main函数中边长校验不通过时直接return false,既没有给用户输出错误提示,也不符合main函数返回值规范(main函数的返回值为int类型,程序异常退出应返回非0值,正常结束返回0)。
修复方案
  • 调用valid_triangle时必须传入三个边长参数,即valid_triangle(x, y, z),拿到函数执行后返回的布尔值再做判断。
  • 补充边长非法的提示信息,修正main函数的返回值。
修复后完整代码
#include <cs50.h>
#include <stdio.h>
#include <stdbool.h>

bool valid_triangle(float x, float y, float z);

int main(void)
{
    float x = get_float("Side 1: ");
    float y = get_float("Side 2: ");
    float z = get_float("Side 3: ");

    if (x <= 0 || y <= 0 || z <= 0)
    {
        printf("边长不能为0或负数\n");
        return 1;
    }

    if (valid_triangle(x, y, z))
    {
        printf("This is a valid triangle\n");
    }
    else
    {
        printf("This is not a valid triangle\n");
    }
    return 0;
}

bool valid_triangle(float x, float y, float z)
{
    if ((x + y <= z) || (x + z <= y) || (y + z <= x))
    {
        return false;
    }
    else
    {
        return true;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:48:03