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

函数调用语法错误求助:无类型参数列表仅允许用于函数定义

问题分析与解决方案

嘿,我一眼就瞅出你代码里的问题啦,咱们一步步来解决:

1. 函数调用的写法错误

你在main函数里写了这行:

bool tri (x, y, z);

这是错误的函数调用方式!调用函数的时候不需要指定返回类型,也不用给参数加类型,直接写函数名加参数就行。正确的调用应该是:

bool result = tri(x, y, z);
// 或者如果不需要保存结果,直接调用:tri(x, y, z);

编译器报错的核心原因就是你在这里误用了类似函数声明的语法,但又没给参数加类型,它误以为你在定义函数但格式不合法,所以抛出了error: a parameter list without types is only allowed in a function definition这个提示。

2. 函数定义里的代码不完整

你的tri函数里有一行逻辑没写完:

if (x+y > z...

判断三角形三边是否合法,需要同时满足任意两边之和大于第三边的三个条件,所以应该补全成:

if (x + y > z && x + z > y && y + z > x)

修正后的完整代码

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

bool tri(double x, double y, double z);

int main(void) {
    double x = get_double("Give:");
    double y = get_double("Another:");
    double z = get_double("Now:");
    // 正确调用函数,可保存结果后续使用
    bool is_triangle = tri(x, y, z);
    // 增加输出直观查看结果
    printf("%s\n", is_triangle ? "Yes, it's a valid triangle!" : "No, not a valid triangle.");
}

bool tri(double x, double y, double z) {
    // 先判断边长是否为正
    if (x < 1 || y < 1 || z < 1) {
        return false;
    }
    // 补全三角形三边合法性判断
    if (x + y > z && x + z > y && y + z > x) {
        return true;
    } else {
        return false;
    }
}

这样修改后,代码就能正常编译运行啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:34