double CountSum(double **mat, int R, int C)
{
double sum = 0.0;
for(int i = 0; i < R / 2; i++)
{
for(int j = 0; j < C / 2; j++)
{
sum += mat[i][j];
}
}
return sum;
}
我这样做是正确的,还是哪里有错误?或者,如果你对如何将参数传递给函数有一些建议,请告诉我
假设R
和C
分别是行数和列数,则此代码将不起作用。
如果是R = 2
,则是(R - 1) / 2 = 0
,因此不会执行外循环,因为i < 0
总是false。
不要减去一,R / 2
就足够了。然而,当R
和C
不相等时,也会出现拐角情况。
关于参数:您可以将R
和C
添加到参数列表中,而不是i
和j
。CCD_ 13并分别通过。从当前的代码来看,它们似乎只是全局变量。CCD_ 14和CCD_。
代码:
double CountSum(double **mat, int R, int C)
{
double sum = 0.0;
for(int i = 0; i < R / 2; i++)
{
for(int j = 0; j < C / 2; j++)
{
sum += mat[i][j];
}
}
return sum;
}
这是正在工作的代码,我希望您了解如何使用它——给它传递一个适当的参数。作为矩阵的高度和宽度或维度的CCD_ 16和CCD_。注意,如果R
或C
或两者都是奇数,那么你总是只得到较小部分的和,如果你想要较大的部分,你应该接受它,因此使用(R + 1) / 2
而不是R / 2
,类似的C
。