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

C++线性搜索求数组最值:仅能输出最大值求助

排查C++数组最小值无法输出的问题

嘿,我来帮你捋捋这个问题!你已经搞定了最大值的查找,那最小值出问题大概率是初始化或者更新逻辑踩了常见的小坑,咱们一步步来排查:

  • 初始化错误是重灾区
    很多人会顺手把最小值初始成0或者一个很小的负数,但如果数组里全是正数,0就会比所有元素都小,直接导致结果错误。正确的做法应该和最大值初始化保持一致——用数组的第一个元素来初始化最小值:

    int min_val = arr[0]; // 别用int min_val = 0; 这种固定值!
    

    毕竟题目明确数组大小是300,肯定有合法元素可以用。

  • 遍历更新逻辑漏写或写反
    检查你遍历数组的循环里,是不是只处理了最大值的更新,完全漏掉了最小值的判断?或者把判断符号写反了?比如应该是arr[i] < min_val的时候更新,你写成了arr[i] > min_val?正确的双判断逻辑应该是这样:

    for (int i = 1; i < 300; ++i) {
        if (arr[i] > max_val) {
            max_val = arr[i];
        }
        if (arr[i] < min_val) { // 这行是不是没写?或者符号错了?
            min_val = arr[i];
        }
    }
    
  • 输出环节漏写变量
    最后确认一下输出语句,是不是只打印了最大值,完全没把最小值的变量加进去?比如你是不是写了cout << max_val;,而正确的应该是cout << max_val << " " << min_val << endl;?别小看这种细节,有时候忙起来真会漏。

  • 输入环节的小疏漏(概率较低)
    虽然你最大值能正确输出,但也可以快速检查下输入数组的循环是不是覆盖了所有300个元素——比如循环是不是从0到299,有没有少读或者多读?如果有元素没被正确赋值,可能会出现随机值干扰最小值的情况。

如果按照上面几点排查完还是有问题,可以把你初始化最小值和遍历更新的代码片段贴出来,这样能更精准定位问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:13:05