2016-09-16 105 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); 
    } 

    }