二维数组:C 编程

Two Dimensional Array: C Programming

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

Write a function in C that takes three parameters: the address of a two dimensional array of type int, the number of rows in the array, and the number of columns in the array. Have the function calculate the sum of the squares of the elements.

例如,对于下图的 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。

非常感谢任何帮助!

正如您在问题中提到的,您需要 sumsquares( array, 2, 4 ); ,但您的函数不这样做。

见下面的代码:

#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.

我们可能会使用此语法在 C:

中创建多维数组
arr = (int **) malloc (( n *sizeof(int *));