以下是2D数组a,b,c的代码:
c:/> g++ HelloWorld.cpp
结果是:2 4 2 4 4 8 4 8
我编写了这段代码,将数组c [i] [j]转换为1D数组。运行后我没有得到相同的结果。
#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 3 2 3 4 6 4 6
答案 0 :(得分:1)
也许你想要这个1D数组的索引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]);
}
}
}
答案 1 :(得分:0)
c [i] [j]在第二个中没有改变。但它在第一个中发生了变化。
答案 2 :(得分:0)
将全局数组创建为大小为4 * m的计算数组,其中m是2x2矩阵的数量。然后使用do while循环,其中循环计数器变量用于计算一组四个元素的指针。将该指针传递给一个方法,该方法从左到右逐行提取2x2矩阵元素到全局数组中。在方法中使用指针引用但不增加方法中的指针。返回方法时,如果有更多的4个元素组进行处理,则重新计算指针并处理下一个2x2矩阵。我的电脑目前坏了,所以我可以用代码来描述。