将 2D 数组转换为 1D

标签 c for-loop multidimensional-array

这是二维数组 a、b、c 的代码:

    #include <stdio.h>

    int main(){
       int a[2][2]=
       {
         {1, 1},
         {2, 2}
       };

        int b[2][2]=
        {
          {1, 1},
          {2, 2}
        };

        int c[2][2]=
        {
          {1, 1},
          {2, 2}
        };

        //Loop for 2D
        int i,j,k, n=2;
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                for (k = 0; k < n; k++) {
                    c[i][j] += a[i][k] * b[k][j];
                    printf("%i ",c[i][j]);
                }
            }
        }
    }

结果是:2 4 2 4 4 8 4 8

我编写了这段代码,将数组 c[i][j] 转换为一维数组。运行后我没有得到相同的结果。

//Loop for 1D

    int i,j,k, n=2, result[50];
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            for (k = 0; k < n; k++) {
                result[k] = c[i][j];
                result[k] += a[i][k] * b[k][j];
                printf("%i ", result[k]);
            }
        }
    }

对于此循环,结果是:2 3 2 3 4 6 4 6

最佳答案

也许您想要一维数组的索引i+n*j

int i,j,k, n=2, result[50];

for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        result[i+n*j] = c[i][j];
        for (k = 0; k < n; k++) {
            result[i+n*j] += a[i][k] * b[k][j];
            printf("%i ", result[i+n*j]);
        }
    }
}

关于将 2D 数组转换为 1D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683928/

相关文章:

java - java中动态创建新对象

c - 读取缓冲区中的文件,然后将缓冲区写入新文件中

c - GNU cpp 是否奇怪地为零参数的宏解释 C99 标准?

c - 编程中的嵌套循环

c - 如何将 Linux 内核驱动模块添加为 Buildroot 包?

Java For循环练习

javascript - 在 javascript 中创建登录 - 数组比较

Java:多维数组输出困惑?

c# - 具有负索引的数组

javascript - Javascript中多维数组的计数值