如何在C++中计算二维数组的每行元素之和?
解决C++二维数组每行元素求和的问题
我来帮你搞定这个二维数组每行求和的需求!先看看你现有代码里的几个小问题,然后一步步修正:
现有代码的问题分析
- 变量
sum没有在每一行循环开始前初始化,这样累加的时候会带上上一行的结果,导致计算错误 - 缺少对当前行元素的累加逻辑,没把
arrayList[i][j]加到sum里 cout << sum;放在内层循环里会跟着每个元素重复输出,应该等整行元素打印完后再输出这一行的总和total变量目前没用到,如果需要计算所有元素的总和也可以顺便加上,不过先聚焦每行求和的需求
修正后的完整代码
#include <iostream> #include <iomanip> using namespace std; const int rows = 3; const int cols = 4; int main(){ int arrayList[rows][cols] = {1,2,3,4,5,6,7,8,9,10,11,12}; int total = 0; // 用来存所有元素的总和,可选 int sum; for(int i=0; i<rows; i++){ sum = 0; // 关键:每处理一行前,把sum重置为0 cout << endl; for(int j=0; j<cols; j++){ cout << setw(5) << arrayList[i][j]; sum += arrayList[i][j]; // 累加当前行的每个元素 total += arrayList[i][j]; // 可选:累加所有元素的总和 } // 整行元素打印完后,输出这一行的总和 cout << setw(8) << "行总和: " << sum; } cout << endl << endl; cout << "所有元素的总和: " << total << endl; // 可选输出 return 0; }
代码修改说明
- 初始化
sum:在每行的外层循环开头把sum设为0,确保每行的求和都是从0开始计算 - 元素累加:在内层循环里,把当前遍历到的
arrayList[i][j]加到sum中,完成每行的求和 - 调整输出位置:把
sum的输出移到内层循环外面,这样每行元素打印完后才输出一次该行的总和,格式更清晰 - 可选的总行数求和:利用原来的
total变量,顺便计算所有元素的总和,如果你不需要可以删掉这部分
运行这段代码后,输出会是这样的:
1 2 3 4 行总和: 10 5 6 7 8 行总和: 26 9 10 11 12 行总和: 42 所有元素的总和: 78
这样就完美实现了你要的每行元素求和功能啦!
内容的提问来源于stack exchange,提问作者Derick Larson
相关产品推荐
相关产品推荐

