【问题标题】:How to increment each element of 2-dimensional array by 2如何将二维数组的每个元素增加 2
【发布时间】:2017-04-18 06:35:16
【问题描述】:

我被要求定义一个名为 A 的数组,其尺寸为 5X4。我必须初始化它的元素,然后将它们中的每一个增加两个 (x+3),其中 x 从 1 开始。

  #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;
  }

不幸的是,输出似乎为 A[i][j] 提供了错误且重复的值

【问题讨论】:

    标签: c arrays loops for-loop multidimensional-array


    【解决方案1】:

    你在这里迭代二维数组:

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

    然后你迭代 2d 数组的每个元素大约 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 并打印它。接下来,您将 3 分配给 A[i][j](注意 i 和 j 没有改变,所以我们将值 1 更改为 3)并打印它。另一次迭代会将其分配给 5 等。这发生在矩阵的每个元素上。最后每个元素的值都是 39。

    您应该将大部分内部 for 循环替换为:

    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] 的 x 值应为 1,然后在像 [0][1] 时增加 2... [0][2].... 以此类推
    • @utdlegend 我做了一些修改以满足您的要求
    • 谢谢它现在有效!你知道为什么 x 循环不起作用吗?
    猜你喜欢
    • 2020-11-06
    • 2021-10-04
    • 1970-01-01
    • 2021-01-17
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2020-05-01
    相关资源
    最近更新 更多