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

二维数组列求和问题求助:已实现行求和,列求和失败

解决二维数组列求和的问题

我看了你的代码,行求和的逻辑完全没问题,但列求和部分确实有两个关键问题导致结果不符合预期:

问题分析

  • 循环顺序搞反了:你现在是先遍历行再遍历列,这种逻辑是逐个扫过每个元素,而不是按列累加。列求和应该先固定列,再遍历该列对应的所有行元素。
  • 累加变量初始化位置错误:columnAdder被放在了最内层循环里,每次循环都会重置为0,所以每次只能加到当前的单个元素值,根本没法累加整列的总和。

修正后的代码

#include <iostream> 
using namespace std; 

int main() { 
    const int ROW1 = 29; 
    const int COL1 = 5; 
    int days[ROW1][COL1] = { 
        { 1, 2, 3, 4, 5 }, 
        { 1, 2, 3, 4, 5 }, 
        // 中间重复行与原代码一致,此处省略
        { 1, 2, 3, 4, 5 }, 
    }; 

    // 行求和(原代码正确,保留)
    for (int k = 0; k < ROW1; k++) { 
        int rowAdder = 0; 
        for (int l = 0; l < COL1; l++) { 
            rowAdder += days[k][l]; 
        } 
        cout << "The total of row " << k + 1 << " is " << rowAdder << "." << endl; 
    } 
    cout << endl; 

    // 修正后的列求和代码
    for (int n = 0; n < COL1; n++) { // 先遍历列
        int columnAdder = 0; // 每列开始前初始化累加变量
        for (int m = 0; m < ROW1; m++) { // 再遍历该列的所有行
            columnAdder += days[m][n]; 
        }
        // 累加完该列所有元素后再输出结果
        cout << "The total of column " << n + 1 << " is " << columnAdder << "." << endl; 
    } 

    return 0; 
}

改动说明

  1. 调整循环顺序:外层循环遍历列索引n,内层循环遍历行索引m,这样就能依次处理每一列的所有行元素。
  2. 移动累加变量位置:把columnAdder的初始化放在列循环的开头,这样每计算一列时,累加器都会从0开始,然后把该列的29个元素逐个加进去。
  3. 调整输出位置:把输出语句移到内层循环外面,等整列的元素都累加完成后,再输出该列的总和,和行求和的输出格式保持一致。

预期输出

修正后运行代码,列求和部分会输出:

The total of column 1 is 29.
The total of column 2 is 58.
The total of column 3 is 87.
The total of column 4 is 116.
The total of column 5 is 145.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:07:32