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

连续数组/股价差值超2统计函数异常排查(编译无错返回0)

问题分析与修正方案

嘿,我瞅了下你的代码,问题其实挺明显的,咱们一步步来捋清楚为啥结果一直是0:

核心问题点

  • 条件判断完全写错了:你要统计的是差值超过2美元,但代码里写的是arr[j] - arr[k] == 2——这只会匹配差值刚好等于2的情况,而且没考虑价格下跌时差值为负的场景,应该用绝对值判断abs(arr[j] - arr[k]) > 2。
  • 循环变量没更新:你的while循环里,j和k一直停留在初始的0和1,根本不会往后遍历数组的其他元素,这就导致循环只检查第一对元素,之后就一直重复判断同一组值,自然统计不到符合条件的天数。
  • 冗余逻辑:j != k这个判断完全没必要,因为你本来就是要比较相邻的两个不同元素,这个条件纯粹多此一举。

修正后的代码

我给你调整了代码逻辑,用更直观的for循环遍历相邻元素,同时修正了判断条件:

#include <iostream>
#include <cstdlib> // 用于abs函数计算绝对值
using namespace std;

int main() {
    int arr[] = {1, 8, 30, 40, 100};
    int size = sizeof(arr)/sizeof(arr[0]);
    int chg = 0; // 用于统计符合条件的天数

    // 遍历数组中每一对相邻元素
    for (int i = 0; i < size - 1; i++) {
        // 计算两日价格差的绝对值,判断是否超过2美元
        if (abs(arr[i] - arr[i+1]) > 2) {
            chg++;
        }
    }

    cout << "连续两日股票价格差值超2美元的天数:" << chg << endl;
    return 0;
}

代码说明

  1. 用for循环遍历从第0个元素到倒数第2个元素,每次和下一个元素(i+1)比较,这样能覆盖所有连续两日的价格组合。
  2. 用abs()函数取差值的绝对值,不管是价格上涨还是下跌,只要幅度超过2美元就算入统计。
  3. 去掉了多余的j和k变量,让逻辑更简洁易懂。

测试你提供的示例数组,结果会是4(四组相邻元素的差值都超过2),完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:35