【发布时间】:2020-12-14 03:56:43
【问题描述】:
这是一个非常基本的问题,我知道,但我正在解决以下简单的练习:
my2Darray 是一个二维数组,包含 nRows 行和 nCols 列。编写一个函数,对每一列中的所有元素求和,并将它们返回到一个名为的数组中 按列总计。编写第二个函数,对每一行中的所有元素求和,并将它们返回到一个名为 totalsByRow 的数组中。
我的代码现在运行良好,但我很好奇为什么以下函数不起作用:
void colSum (int arrayArg[nRows][nCols]) {
static int sumofCols[nCols] = {};
int rowcount = 0;
for (int i = 0; i < nCols; i++) {
for ( ; rowcount < nRows; rowcount++) {
sumofCols[i] += arrayArg[rowcount][i];
}
cout << sumofCols[i] << endl;
}
}
为什么我不能在嵌套的for 循环之外创建这个rowcount 变量?我用作函数参数的数组中只有两行的第一列被汇总到sumofCols[0],这导致sumofCols[1]等于0。当我将rowcount设置在第一个@的边界内时987654327@ 循环,或第二个循环,迭代按预期工作。
for (int rowcount = 0; rowcount < nRows; rowcount++)
这是我必须使用的代码。
我只是想确保我 100% 了解我正在做的事情,因为 C++ 对于像我这样的初学者来说可能会很困惑。
哦,我确实更改了这个函数以返回一个 int* 值,因为我基本上是根据练习需要将 sumofCols 分配给另一个数组。
【问题讨论】:
-
在每次迭代期间你在哪里初始化
rowcount? -
在外部for循环的每次迭代中(即
i递增时),您需要将rowCount重置为0 -
那就是问题所在,ChrisMM,非常感谢。我首先在for循环之外有这个rowcount变量的原因是因为我最初尝试了一个while循环来向sumofCols [i]添加值,我猜我在错误的位置将rowCount重置为0。跨度>