0

谁能帮忙,我一直在解决这个问题:

用 C 编写一个函数,它接受三个参数:类型为 的二维数组的地址、数组中int的行数和数组中的列数。让函数计算元素的平方和。

例如,对于下nums图所示的数组:

  23  12  14   3

  31  25  41  17

函数的调用可能是sumsquares ( nums, 2, 4 );并且返回的值是4434. 编写一个简短的程序来测试您的功能。


到目前为止,我的程序包括:

#include<stdio.h>
int addarrayA(int arrayA[],int highestvalueA);

int addarrayA(int arrayA[],int highestvalueA)
{
int sum=0, i;
for (i=1; i<highestvalueA; i++)
    sum = (i*i);

return sum;
}

int main( void )
{
int arr [2][4] = {{ 23, 12, 14,  3 },
                 { 31, 25, 41, 17 }};

printf( "The sum of the squares: %d. \n", addarrayA (arr[2], arr[4]) );

return 0;
}

我收到的答案是一个巨大的负数,但应该是 4434。

任何帮助是极大的赞赏!

4

2 回答 2

2

As you mentioned in question, you need sumsquares( array, 2, 4 ); , but your function don't do that.

See below code:

#include<stdio.h>

int sumsquares(int* arrayA,int row, int column);

int sumsquares(int* arrayA,int row, int column)
{
    int sum=0, i;
    for (i=0; i<row*column; i++)
        sum += (arrayA[i]*arrayA[i]);

    return sum;
}

int main( void )
{
    int arr [2][4] = {{ 23, 12, 14,  3 },
                      { 31, 25, 41, 17 }};

    printf( "The sum of the squares: %d. \n", sumsquares (&arr[0][0], 2, 4) );

    return 0;
}

Output:

The sum of the squares: 4434.
于 2015-12-04T04:25:29.003 回答
-2

我们可以使用这种语法在 C 中创建一个多维数组:

arr = (int **) malloc (( n *sizeof(int *));
于 2017-12-12T05:02:58.273 回答