这是二维数组 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/