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

基于两数最大值函数实现四数求最大值,解决C代码编译报错问题

问题原因&修复方案

报错原因

  • 第一个报错 expected expression before int:函数调用时不需要给参数加类型声明,只有函数定义、声明阶段才需要标注参数类型。你在调用max2时写的max2(int a, int d);属于语法错误,额外加的int关键字不符合函数调用的语法规则,编译器无法识别就抛出了该错误。
  • 第二个报错 too few arguments to function max2:属于上一个语法错误引发的连锁报错,编译器解析错误的参数写法时,误判了你传入的参数数量,修复第一个问题后该报错会自动消失。

额外隐藏问题

你定义的max2、max4函数返回值类型标注为int,但函数体内没有任何return语句,不符合C语言的语法要求,要么将返回值类型改为void(表示无返回值),要么补充返回最大值的逻辑。

修复后可运行代码

保留原逻辑的修改版本

#include <stdio.h>
// 调整返回值为void,匹配当前直接打印的逻辑
void max2(int a, int b) {
    if(a > b) {
        printf("%d is the max\n", a);
    } else {
        printf("%d is the max\n", b);
    }
}

void max4(int a, int b, int c, int d) {
    if(a > b) {
        if(a > c) {
            // 调用函数仅传变量,不需要加类型声明
            max2(a, d);
        } else {
            max2(c, d);
        }
    } else {
        if(b > c) {
            max2(b, d);
        } else {
            max2(c, d);
        }
    }
} 

int main() {
    max4(666,853,987,42);
    return 0;
}

更规范的函数实现版本(函数仅做计算,不耦合打印逻辑)

#include <stdio.h>
int max2(int a, int b) {
    return a > b ? a : b;
}

int max4(int a, int b, int c, int d) {
    // 利用嵌套调用简化逻辑,无需多层if判断
    return max2(max2(max2(a, b), c), d);
}

int main() {
    int max_val = max4(666,853,987,42);
    printf("%d is the max\n", max_val);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:03