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

调用函数时出现‘expected expression’错误的修复方法(C语言)

修复C语言函数调用的"expected expression"错误及三角形验证逻辑优化

嘿,我一眼就看到问题出在哪啦——这个报错完全是数组传参的语法细节没搞对!

首先解决你当前的直接错误:

  • 你调用valid_triangle时写的valid_triangle(side[]);是不符合C语言语法的。在C里传递数组给函数,只需要写数组名就行,数组名会自动转换成指向第一个元素的指针。所以正确的调用方式应该是valid_triangle(side);

另外顺便给你提个小建议:你当前的三角形判断逻辑其实也有点问题,顺便一起修正下吧:

  • 有效三角形的核心规则是任意两边之和必须严格大于第三边,而不是大于等于——如果等于的话,三条边会共线,形成的是退化三角形,不能算作有效三角形。
  • 还要加上一个前提:所有边长必须是正整数,毕竟边长不能是0或者负数对吧?

下面是修正后的完整代码:

#include <stdio.h>
#include <cs50.h>

void valid_triangle(int side[]);

int main(void) {
    int side[3];
    for (int i = 0; i < 3; i++) {
        side[i] = get_int("Side %i: ", i+1);
    }
    // 移除多余的[],直接传入数组名
    valid_triangle(side);
}

void valid_triangle(int side[]) {
    // 先检查边长合法性,再验证三边关系
    if (side[0] > 0 && side[1] > 0 && side[2] > 0 
        && side[0] + side[1] > side[2] 
        && side[0] + side[2] > side[1] 
        && side[1] + side[2] > side[0]) {
        printf("true\n");
    } else {
        printf("false\n");
    }
}

再简单梳理下修正点:

  1. 函数调用处去掉了side后面的[],完全符合C语言数组传参的语法要求,直接解决了"expected expression"错误。
  2. 添加了边长为正的判断,避免输入非正数的无效情况。
  3. 将判断条件中的>=改为>,严格贴合有效三角形的数学定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:49:31