2016-12-03 56 views
1

我被要求定義一個名爲A的數組,其維數爲5X4。我必須初始化它的元素然後從1如何將2維數組的每個元素增加2

#include <stdio.h> 
    #include <stdlib.h> 
    #define SIZE 5 
    #define size 4 

    int main(){ 
     int A[SIZE][size]={0}; 
     int B[SIZE][size]; 
     int x; 
     int i; 
     int j; 

     for(i = 0; i < SIZE; i++){ 
      for(j = 0; j < size; j++){ 
       for(x = 1; x < 40; x = x + 2){ 
        A[i][j] = x; 
        printf("%d\n", A[i][j]); 
       }                
      } 
     } 

     return 0; 
    } 

不幸的是增加它們中的每一個由兩個(X + 3),其中X啓動,輸出爲似乎A [1]是給錯誤和重複值[J]

回答

1

你迭代的二維數組的位置:

for(i=0;i<SIZE;i++){ 
    for(j=0;j<size;j++){ 

    } 
} 

然後你遍歷二維數組中的每個元素的20倍左右,改變這裏的價值和打印值:

for(x=1;x<40;x=x+2){ 
    A[i][j]=x; 
    printf("%d\n",A[i][j]); 
} 

在上面的代碼A [i] [j]不會改變。 x將具有值1,3,5,7,...,39. 這裏發生的是分配A [i] [j] = 1並打印它。接下來,您將A [i] [j](注意i和j沒有更改,因此我們將值1更改爲3)分配給3並打印出來。另一個迭代將它分配給5等。這發生在矩陣的每個元素。在結束每一個元素都會有值39

,就應該替換最內層的循環,用:

A[i][j] = value; 
value += 2; 

到底哪款給

int value = 1; 
for(i=0;i<SIZE;i++){ 
    for(j=0;j<size;j++){ 
     A[i][j] = value; 
     value += 2; 
     printf("%d\n",A[i][j]); 
    } 
} 

你沒解釋清楚什麼是初始值

+0

每個元素的初始值應爲0.但是,元素[0] [0]的x值應該爲1,然後像[0] [1] ... [ 0] [2] ....等等 – utdlegend

+0

@ut dlegend我做了一些編輯以適合您的要求 – pato

+0

謝謝你現在的作品!你有什麼想法爲什麼X循環不起作用? – utdlegend