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

C语言二维数组指定列求和:如何修改全列求和代码按索引计算单列和

二维数组指定列求和实现方案

原代码核心问题

  • 数组下标使用逻辑错误:C语言二维数组的下标规则是arr[行索引][列索引],你定义的arr是4行3列,行索引范围是03,列索引范围是02,原代码中循环i范围到3(LINE=4),作为列下标使用时已经越界,会读取到非法内存值。
  • 冗余双重循环:指定列求和只需要固定列索引,遍历所有行的对应位置累加即可,双重循环会遍历所有元素累加,得到的是全部元素的和,不符合需求。
    你之前硬编码为arr[0][i]的修改也不对,该写法遍历的是第一行的所有元素,不是第一列的所有元素,自然无法得到正确结果。

实现方案

固定目标列索引,仅遍历所有行累加对应列的元素即可,可额外增加列索引合法性校验,避免越界访问。
修改后完整代码如下:

#include <stdio.h>

#define LINE 4
#define COLUMN 3

int main()
{
    int arr[LINE][COLUMN] = {
         1,  2,  3,
         4,  5,  6,
         7,  8,  9,
        10, 11, 12 };
    // 定义要求和的目标列索引,可自行修改为需要的值
    int target_col = 0;
    int csum = 0;

    // 列索引合法性校验,避免越界访问
    if (target_col < 0 || target_col >= COLUMN) {
        printf("输入的列索引非法!\n");
        return 1;
    }

    printf("\nColumn Sum of column %d....\n", target_col);
    // 遍历所有行,累加目标列的元素
    for (int i = 0; i < LINE; i++)
    {
        csum += arr[i][target_col];
        printf("当前行:%d | 累计和:%d \n", i, csum);
    }

    printf("\n指定列的元素和为 %d\n",csum);

    return 0;
}

当target_col设置为0时,输出结果为22,符合预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:06:03