求助:C语言中实现数组元素递推累加的逻辑问题
如何实现指定的数组累加逻辑
先明确你的预期计算流程(以数组{1,2,3,4,5,6,7,8,9,10}为例):
- 第一步:前两个元素相加 →
1+2=3 - 第二步:用上一步结果加第二个元素 →
3+2=5 - 第三步:用上一步结果加第三个元素 →
5+3=8 - 后续依次用上一步结果加数组的下一个元素,直到遍历完所有元素
原代码的问题
- 数组越界:循环中
i从0到9时,array[i+1]会访问array[10](超出数组范围);i=0时array[i-1]访问array[-1],这两种情况都会触发未定义行为。 - 逻辑错误:代码没有保留上一步的计算结果进行迭代,完全不符合你需要的累加规则。
修正后的代码
#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
相关产品推荐
相关产品推荐

