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

C语言数组最小值查找函数无预期输出问题求助

问题分析与修复

核心错误点

  • 函数传参错误:调用find(board[6])时,传递的是数组越界的元素(数组下标从0开始,board[5]才是最后一个有效元素),而且find函数需要的是数组首地址(直接传数组名即可),不是单个int值。错误传参会导致函数内部访问非法内存,根本无法正确遍历数组。
  • 多余的无效调用:main里第一行find(board[6]);没有保存返回值,属于无意义的错误调用,还会额外执行一次错误的查找逻辑。

修正后的代码

#include<stdio.h>

int find(int board[]);

int main (){
    int board[6] = {6, 2, 6, 99, 0, 2};
    // 传递数组首地址,保存返回的最小值
    int min_val = find(board);
    printf("最小值:%d", min_val);
    return 0;
}

int find(int board[]){
    int minimum = board[0]; // 用第一个元素初始化最小值

    // 从i=1开始循环,避免重复比较第一个元素
    for(int i = 1; i < 6; i++){
        if(minimum > board[i]){
            minimum = board[i];
        }
    }

    return minimum;
}

额外优化说明

  • 循环从i=1开始即可,因为已经用board[0]初始化了最小值,无需重复比较。
  • 原函数内的循环printf会打印最小值的每一步变化,若只需要最终结果,可去掉该内部打印,仅在main中输出最终值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:42:33