调用函数时出现‘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"); } }
再简单梳理下修正点:
- 函数调用处去掉了
side后面的[],完全符合C语言数组传参的语法要求,直接解决了"expected expression"错误。 - 添加了边长为正的判断,避免输入非正数的无效情况。
- 将判断条件中的
>=改为>,严格贴合有效三角形的数学定义。
内容的提问来源于stack exchange,提问作者jiayou
相关产品推荐
相关产品推荐

