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

求助:C语言中实现数组元素递推累加的逻辑问题

如何实现指定的数组累加逻辑

先明确你的预期计算流程(以数组{1,2,3,4,5,6,7,8,9,10}为例):

  • 第一步:前两个元素相加 → 1+2=3
  • 第二步:用上一步结果加第二个元素 → 3+2=5
  • 第三步:用上一步结果加第三个元素 → 5+3=8
  • 后续依次用上一步结果加数组的下一个元素,直到遍历完所有元素

原代码的问题

  1. 数组越界:循环中i从0到9时,array[i+1]会访问array[10](超出数组范围);i=0时array[i-1]访问array[-1],这两种情况都会触发未定义行为。
  2. 逻辑错误:代码没有保留上一步的计算结果进行迭代,完全不符合你需要的累加规则。

修正后的代码

#include <stdio.h>
int main()
{
    int array[] = {1,2,3,4,5,6,7,8,9,10};
    int len = sizeof(array) / sizeof(array[0]);
    
    // 处理数组元素不足的边界情况
    if (len < 2) {
        printf("数组至少需要2个元素才能执行初始累加\n");
        return 0;
    }
    
    // 初始化:前两个元素相加
    int result = array[0] + array[1];
    printf("初始结果:%d\n", result);
    
    // 从第二个元素开始,依次累加到结果中
    for (int i = 1; i < len; i++) {
        result += array[i];
        printf("当前结果:%d\n", result);
    }
    
    return 0;
}

代码说明

  • 用sizeof计算数组长度,避免硬编码数字,适配不同长度的数组。
  • 先判断数组元素数量,防止元素不足时出错。
  • 初始result直接取前两个元素的和,符合你的第一步要求。
  • 循环从数组第二个元素(索引1)开始,每次将当前元素加到result上,完成后续的迭代累加。

运行输出

初始结果:3
当前结果:5
当前结果:8
当前结果:12
当前结果:17
当前结果:23
当前结果:30
当前结果:38
当前结果:47
当前结果:57

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:49