【发布时间】:2016-05-16 16:47:28
【问题描述】:
我在 C 中乘以适当的矩阵(以两个一维数组的形式)时遇到了一些麻烦。无法创建或删除任何变量。
正确的结果应该是:http://s32.postimg.org/nrkigh2l1/IMG_20160516_183316.jpg
打印周期应该是正确的。
#include <stdio.h>
void main(){
unsigned int m = 3; // first matrix number of rows
unsigned int n = 2; // first matrix number of columns
unsigned int k = 4; // second matrix number of columns
short int mat1[] = { -1,-2, 4, 5, 4, -2 }; // first matrix (3x2)
short int mat2[] = { 2, 0, 0, 0, 0, 2, 0, 0 }; // second matrix 2x4)
int mat3[1024]; // final matrix (3x4)
// printing final matrix
unsigned int i, j, h;
printf("Final matrix:\n");
for (i = h = 0; i < m; i++){
for (j = 0; j < k; j++, h++)
printf("%6d ", mat3[h]);
printf("\n");
}
}
【问题讨论】:
-
发布您尝试过的内容并指出您认为问题出在哪里。
-
我不明白如何使用索引(行数和列数)在矩阵中滑动。
-
看看this,用一维数组表示索引。如果你有
mat1[3][2],那么就像在你的声明中一样...... -
先用铅笔在纸上解决这个问题。将行命名为列并在解决此问题时听取自己的意见。
-
[0][0]->[0]; [0][1]->[1]; [1][0]->[2];等在 3*2 矩阵中。
标签: c arrays matrix-multiplication