2D阵列打印出元素的总和

时间:2014-01-13 08:58:47

标签: c++ arrays visual-studio printf

我编写了一个程序,该程序将2D数组中的元素总和打印出来。

到目前为止我的代码:

#include <iostream>
#include <stdio.h>

int main()
{
    int array [3][5] = 
    {
        { 1, 2, 3, 4, 5, }, // row 0
        { 6, 7, 8, 9, 10, }, // row 1
        { 11, 12, 13, 14, 15 } // row 2
    };

    int i, j=0;
    int num_elements=0;
    float sum=0;

    for (i=0; i<num_elements; i++)
    {
        sum = sum + array[i][j];

    }

/*for(i=0; i<num_elements; i++)
   {
     printf("%d ", array[i][j]);
   }*/

    // printf("a[%d][%d] = %d\n", sum);

    // output each array element's value 
    for ( i = 0; i < 3; i++ )
    {
      for ( j = 0; j < 5; j++ )
      {
          printf("a[%d][%d] = %d\n", i,j, array[i][j]);

      }
    }

    system("PAUSE");
    return 0;
}

我可以打印出每个阵列中的元素。但我想打印出元素的总和。我在评论部分看到了一个,但它没有用。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

您只对矩阵的第一列求和:

sum = sum + array[i][j];

其中j设为0。

使用双循环:

for ( i = 0; i < 3; i++ )
{
  for ( j = 0; j < 5; j++ )
  {
      sum+=array[i][j];

  }
}

答案 1 :(得分:0)

这个循环是问题所在:

int i, j=0;    
int num_elements=0;
float sum=0;

for (i=0; i<num_elements; i++)
{
    sum = sum + array[i][j];

}

它根本不会执行,因为i<num_elements永远不会为真 - num_elements为0.最重要的是,你不要将j设置为远离0。 / p>

你需要一个双循环,就像你以后使用的那样:

for ( i = 0; i < 3; i++ )
{
  for ( j = 0; j < 5; j++ )
  {
      sum += array[i][j];

  }
}

答案 2 :(得分:0)

尝试将二维数组中所有元素的总和 -

for ( i = 0; i < 3; i++ )
{
  for ( j = 0; j < 5; j++ )
  {
      sum=sum+array[i][j];

  }
}

答案 3 :(得分:0)

首先,您已将num_elements初始化为零。所以你什么都得不到。

另外,为此,

您需要一个双循环来打印所有元素的总和。同时为每个行中的元素数量声明其他变量,例如 row_num (对于行数)和 element_num ,然后使用此代码。

for(i=0; i<row_num; i++)
{
    for(j=0; j<element_num; j++)
    {
            sum = sum + array[i][j];
    }
}

答案 4 :(得分:0)

作为存储在连续内存中的数组,可以只使用一个循环。

for (int i=0; i<(3*5); i++) <-- 3*5 is  num_of_colums*num_of_rows.
{
     sum = sum + *(array[0]+i);
}