簡體   English   中英

2D陣列打印出元素的總和

[英]2D array print out sum of elements

我編寫了一個程序,用於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;
}

我可以打印出每個陣列中的元素。 但我想打印出元素的總和。 我在評論部分看到了一個,但它沒有用。 有人可以幫忙嗎?

您只對矩陣的第一列求和:

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

其中j設置為0。

使用雙循環:

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

  }
}

這個循環是問題所在:

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。

你需要一個雙循環,就像你以后使用的那樣:

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

  }
}

試試這個2D陣列中所有元素的總和 -

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

  }
}

首先,您已將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];
    }
}

作為存儲在連續存儲器中的數組,可以僅使用一個循環。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM