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

C语言入门for循环问题排查:累加数组输出与原输入数组结果一致

问题根因

你的代码错误出在累加数组b的计算逻辑上:

  • 声明的b数组是局部变量,未初始化的情况下内部存储的是随机垃圾值
  • 你写的b[i] = b[i] + a[i]完全没有用到前序位置的累加结果,刚好你的运行环境里初始垃圾值为0,所以最终输出就和输入数组a完全一致

实现逻辑说明

前缀累加数组的核心规则是:第二个数组的第i个单元值,等于前i+1个输入值的总和,对应两种实现方式:

  1. 利用前一位累加结果计算:b[i] = b[i-1] + a[i](i≥1,b[0] = a[0])
  2. 借助临时累加变量计算:每次把累加后的结果赋值给b[i],是你已知写法的变形,也满足作业需要把结果存入第二个数组的要求

修正后的完整代码

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int n; // 数组元素个数
    int i; // 循环遍历变量

    printf("你想要创建的数组包含多少个元素?\n");
    scanf("%d", &n);

    double a[n]; // 存储用户输入的数组
    double b[n]; // 存储前缀累加结果的数组

    printf("请输入对应数量的数值:\n");
    for (i = 0; i < n; i++) {
        scanf("%lf", &a[i]);
    }

    printf("计算结果如下:\n");
    // 输出第一个输入数组
    for (i = 0; i < n; i++) {
        printf("%lf ", a[i]);
    }
    printf("\n");
    
    // 计算并输出第二个累加数组
    double sum = 0;
    for (i = 0; i < n; i++) {
        sum += a[i];
        b[i] = sum;
        printf("%lf ", b[i]);
    }

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:57:04