如何使用循环计算数组元素的累积和?
解决数组累积和的问题
嘿,我看到你在写数组累积和的代码时遇到了小麻烦,咱们一步步来梳理并修正它:
先说说你代码里的几个关键问题:
- 函数名不匹配:你在
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]); } }
代码逻辑解释:
- 初始化
running为0,它会一直记录到当前元素为止的累积总和 - 遍历数组的每一个元素:
- 把当前元素
Array[i]加到running上,更新累积和 - 把更新后的
running赋值给sum[i],这样sum数组的第i个元素就是原数组前i+1个元素的和
- 把当前元素
- 最后遍历
sum数组,打印出所有累积和的值
运行这段代码,你会得到输出:sum: 1 0 92 97 529 ,这正是你想要的累积结果!
内容的提问来源于stack exchange,提问作者user9741196
相关产品推荐
相关产品推荐

