2016-12-03 129 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