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

C语言max_of_four函数错误排查:为何无法输出正确最大值?

问题排查与代码修正

代码存在的核心问题

  • 函数职责混淆:max_of_four的设计目标是返回四个数的最大值,但当前代码在函数内部直接调用printf输出结果,且固定返回0。主函数又接收这个无效返回值并再次输出,导致最终输出是函数内的最大值加0(比如输入1 2 3 4会输出40),完全不符合预期。
  • 条件判断逻辑漏洞:使用>进行严格比较,当存在多个相等的最大值时(比如a=b=5,c=d=3),所有if条件都不满足,会错误走到else分支输出d的值。

修正后的代码

#include <stdio.h>

int max_of_four(int a, int b, int c, int d);

int main() 
{
    int a, b, c, d;
    scanf("%d %d %d %d", &a, &b, &c, &d);
    int ans = max_of_four(a, b, c, d);
    printf("%d", ans);
    
    return 0;
}

int max_of_four(int a, int b, int c, int d)
{
    // 逐步比较,自然处理数值相等的情况
    int max_val = a;
    if (b > max_val) max_val = b;
    if (c > max_val) max_val = c;
    if (d > max_val) max_val = d;
    return max_val;
}

修正说明

  1. 让max_of_four专注于计算最大值并返回,输出逻辑交给主函数处理,符合单一职责原则。
  2. 采用逐步比较的方式,无需复杂的多条件判断,同时完美兼容多个数值相等的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:15:33