2016-09-16 88 views
0

我想添加一个二维数组明智的行元素,然后我想要存储在另一个数组中的总和。 Like :: 3行3列数组 {1,2,3} => 6,{2,3,4} => 9,{5,6,7} => 18现在我想将值(6,9,18)存储在另一个数组中。我应该怎么做?我只能总结明智的行。我应该使用malloc吗?请帮忙。无法在数组中存储数据

#include<stdio.h> 
void main(){ 
    int i,j,k,sum=0; 
    int array[3][3]={ 
     {1,2,4}, 
     {4,5,6}, 
     {7,8,9} 
    }; 
    int array2[k]; 
    for(i=0;i<=2;i++){ 
     for(j=0;j<=2;j++){ 
      sum=sum+array[i][j]; 
     } 
     printf("sum is %d in row %d in array1 \n \n",sum,i); 

     sum=0; 
    } 
} 
+0

'k'从未设置。 'int array2 [k];'因此是一个问题。建议'int k = 3;'或'int array2 [3];' – chux

回答

0

如果您知道,您的数组包含3行,则不需要使用任何malloc。只需声明这样的结果数组:int array2[3]然后,将这些数组存储在这个数组中:array2[i] = sum;(内循环之后,其中j是迭代器)。为了让您的代码更具可预测性,请在计算总和时在内循环之前将sum设置为零。

+0

你能建议我怎么用malloc来处理同样的问题?你的回答是非常有用的 –

+0

@SUVAMROY谢谢=)假如你知道你的'array'包含'k'行,你需要像这样为'array2'分配内存:'array2 =(int *)malloc sizeof(int)* k)'。你需要使外循环从0到k-1迭代:'for(i = 0; i KKastaneda

+0

而不是'array2 =(int *)malloc(sizeof(int)* k)',可以考虑'array2 = malloc(sizeof * array2 * k);'不需要转换,不需要协调类型,简单使用引用数据的大小。 – chux

0

int array2[3];

array2[i]=sum内环

后,您可以提取3是这样的:

#define SIZE 3 

,并用它需要的地方。

+2

问题是:如何存储这些值。你没有回答。 –

+0

请建议我如何使用malloc来处理这个问题? –

0

源数组是固定大小,所以结果数组也可以。

int array2[3]; 
for(i=0;i<=2;i++){ 
    array2[i]=0; 
    for(j=0;j<=2;j++){ 
     array2[i]+=array[i][j]; 
    } 
    printf("sum is %d in row %d in array1 \n \n",array[i],i); 
} 
0

你要记住,你必须验证数组作为 常量的大小或使用malloc,比你可以使用此代码。

void main(){ 


int i,j,k,sum=0; 
int array[3][3]={ 
{1,2,4}, 
{4,5,6}, 
{7,8,9} 
}; 
int array2[3]; 
for(i=0;i<=2;i++){ 
for(j=0;j<=2;j++){ 
    sum=sum+array[i][j]; 
} 
array2[i] = sum ; 
sum = 0 ; 


sum=0; 

    } 
for(i=0;i<=2;i++){ 
    printf("sum is %d in row %d in array1 \n \n",array2[i],i); 
    } 

    }