我编写了一个程序,该程序将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;
}
我可以打印出每个阵列中的元素。但我想打印出元素的总和。我在评论部分看到了一个,但它没有用。有人可以帮忙吗?
答案 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);
}