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

如何使用循环计算数组元素的累积和?

解决数组累积和的问题

嘿,我看到你在写数组累积和的代码时遇到了小麻烦,咱们一步步来梳理并修正它:

先说说你代码里的几个关键问题:

  • 函数名不匹配:你在main里调用的是printSum,但实际定义的函数是cSum,这会导致编译错误,得把调用改成cSum(Array, length);
  • 累积和逻辑错误:你现在的循环里只是把原数组元素直接赋值给sum[i],而且running = running +1完全没起到累加的作用——咱们要的是把running加上当前数组元素,再把结果存到sum[i]里
  • 冗余变量:你定义了product[length]但完全没用到,可以删掉它,让代码更整洁

修正后的完整代码:

#include <stdio.h>

void cSum(int Array[], int length);

int main(void) {
    int Array[5] = {1, -1, 92, 5, 432};
    int length = 5;
    cSum(Array, length); // 修正函数名匹配问题
}

void cSum(int Array[], int length) {
    int i;
    int sum[length];
    int running = 0; // 这个变量用来保存当前的累积和

    for (i = 0; i < length; i++) {
        running += Array[i]; // 把当前数组元素加到累积和里
        sum[i] = running;    // 将当前累积和存入sum数组对应位置
    }

    printf("sum: ");
    for (i = 0; i < length; i++) {
        printf("%d ", sum[i]);
    }
}

代码逻辑解释:

  1. 初始化running为0,它会一直记录到当前元素为止的累积总和
  2. 遍历数组的每一个元素:
    • 把当前元素Array[i]加到running上,更新累积和
    • 把更新后的running赋值给sum[i],这样sum数组的第i个元素就是原数组前i+1个元素的和
  3. 最后遍历sum数组,打印出所有累积和的值

运行这段代码,你会得到输出:sum: 1 0 92 97 529 ,这正是你想要的累积结果!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:56:49