C 使用数组生成错误结果的矩阵乘法
下面的代码将两个不同阶数的矩阵相乘并返回结果,即mat1(6x3)*mat2(3x6)并在dest中返回6x6矩阵 问题是结果与计算值不匹配。此外,如果观察到结果,mat2正在更改其内容 PS:iterals:3,0,1 mat1[3][1]=0.000000 mat2[1][0]=20.000000 dest[3][0]=0.000000 mat2[1][0]的原始含量为零 输出:C 使用数组生成错误结果的矩阵乘法,c,arrays,matrix-multiplication,C,Arrays,Matrix Multiplication,下面的代码将两个不同阶数的矩阵相乘并返回结果,即mat1(6x3)*mat2(3x6)并在dest中返回6x6矩阵 问题是结果与计算值不匹配。此外,如果观察到结果,mat2正在更改其内容 PS:iterals:3,0,1 mat1[3][1]=0.000000 mat2[1][0]=20.000000 dest[3][0]=0.000000 mat2[1][0]的原始含量为零 输出: iterals: 0, 0, 0 mat1[0][0] = 10.000000 mat2[0][0] =
iterals: 0, 0, 0 mat1[0][0] = 10.000000 mat2[0][0] = 1.000000 dest[0][0] = 10.000000
iterals: 0, 0, 1 mat1[0][1] = 0.000000 mat2[1][0] = 0.000000 dest[0][0] = 10.000000
iterals: 0, 0, 2 mat1[0][2] = 0.000000 mat2[2][0] = 0.000000 dest[0][0] = 10.000000
iterals: 0, 1, 0 mat1[0][0] = 10.000000 mat2[0][1] = 0.000000 dest[0][1] = 0.000000
iterals: 0, 1, 1 mat1[0][1] = 0.000000 mat2[1][1] = 0.000000 dest[0][1] = 0.000000
iterals: 0, 1, 2 mat1[0][2] = 0.000000 mat2[2][1] = 0.000000 dest[0][1] = 0.000000
iterals: 0, 2, 0 mat1[0][0] = 10.000000 mat2[0][2] = 0.000000 dest[0][2] = 0.000000
iterals: 0, 2, 1 mat1[0][1] = 0.000000 mat2[1][2] = 1.000000 dest[0][2] = 0.000000
iterals: 0, 2, 2 mat1[0][2] = 0.000000 mat2[2][2] = 0.000000 dest[0][2] = 0.000000
iterals: 0, 3, 0 mat1[0][0] = 10.000000 mat2[0][3] = 0.000000 dest[0][3] = 0.000000
iterals: 0, 3, 1 mat1[0][1] = 0.000000 mat2[1][3] = 0.000000 dest[0][3] = 0.000000
iterals: 0, 3, 2 mat1[0][2] = 0.000000 mat2[2][3] = 0.000000 dest[0][3] = 0.000000
iterals: 0, 4, 0 mat1[0][0] = 10.000000 mat2[0][4] = 0.000000 dest[0][4] = 0.000000
iterals: 0, 4, 1 mat1[0][1] = 0.000000 mat2[1][4] = 0.000000 dest[0][4] = 0.000000
iterals: 0, 4, 2 mat1[0][2] = 0.000000 mat2[2][4] = 1.000000 dest[0][4] = 0.000000
iterals: 0, 5, 0 mat1[0][0] = 10.000000 mat2[0][5] = 0.000000 dest[0][5] = 0.000000
iterals: 0, 5, 1 mat1[0][1] = 0.000000 mat2[1][5] = 0.000000 dest[0][5] = 0.000000
iterals: 0, 5, 2 mat1[0][2] = 0.000000 mat2[2][5] = 0.000000 dest[0][5] = 0.000000
iterals: 1, 0, 0 mat1[1][0] = 0.000000 mat2[0][0] = 1.000000 dest[1][0] = 0.000000
iterals: 1, 0, 1 mat1[1][1] = 0.000000 mat2[1][0] = 0.000000 dest[1][0] = 0.000000
iterals: 1, 0, 2 mat1[1][2] = 0.000000 mat2[2][0] = 0.000000 dest[1][0] = 0.000000
iterals: 1, 1, 0 mat1[1][0] = 0.000000 mat2[0][1] = 0.000000 dest[1][1] = 0.000000
iterals: 1, 1, 1 mat1[1][1] = 0.000000 mat2[1][1] = 0.000000 dest[1][1] = 0.000000
iterals: 1, 1, 2 mat1[1][2] = 0.000000 mat2[2][1] = 0.000000 dest[1][1] = 0.000000
iterals: 1, 2, 0 mat1[1][0] = 0.000000 mat2[0][2] = 0.000000 dest[1][2] = 0.000000
iterals: 1, 2, 1 mat1[1][1] = 0.000000 mat2[1][2] = 1.000000 dest[1][2] = 0.000000
iterals: 1, 2, 2 mat1[1][2] = 0.000000 mat2[2][2] = 0.000000 dest[1][2] = 0.000000
iterals: 1, 3, 0 mat1[1][0] = 0.000000 mat2[0][3] = 0.000000 dest[1][3] = 0.000000
iterals: 1, 3, 1 mat1[1][1] = 0.000000 mat2[1][3] = 0.000000 dest[1][3] = 0.000000
iterals: 1, 3, 2 mat1[1][2] = 0.000000 mat2[2][3] = 0.000000 dest[1][3] = 0.000000
iterals: 1, 4, 0 mat1[1][0] = 0.000000 mat2[0][4] = 0.000000 dest[1][4] = 0.000000
iterals: 1, 4, 1 mat1[1][1] = 0.000000 mat2[1][4] = 0.000000 dest[1][4] = 0.000000
iterals: 1, 4, 2 mat1[1][2] = 0.000000 mat2[2][4] = 1.000000 dest[1][4] = 0.000000
iterals: 1, 5, 0 mat1[1][0] = 0.000000 mat2[0][5] = 0.000000 dest[1][5] = 0.000000
iterals: 1, 5, 1 mat1[1][1] = 0.000000 mat2[1][5] = 0.000000 dest[1][5] = 0.000000
iterals: 1, 5, 2 mat1[1][2] = 0.000000 mat2[2][5] = 0.000000 dest[1][5] = 0.000000
iterals: 2, 0, 0 mat1[2][0] = 0.000000 mat2[0][0] = 0.000000 dest[2][0] = 0.000000
iterals: 2, 0, 1 mat1[2][1] = 20.000000 mat2[1][0] = 0.000000 dest[2][0] = 0.000000
iterals: 2, 0, 2 mat1[2][2] = 0.000000 mat2[2][0] = 0.000000 dest[2][0] = 0.000000
iterals: 2, 1, 0 mat1[2][0] = 0.000000 mat2[0][1] = 0.000000 dest[2][1] = 0.000000
iterals: 2, 1, 1 mat1[2][1] = 20.000000 mat2[1][1] = 0.000000 dest[2][1] = 0.000000
iterals: 2, 1, 2 mat1[2][2] = 0.000000 mat2[2][1] = 0.000000 dest[2][1] = 0.000000
iterals: 2, 2, 0 mat1[2][0] = 0.000000 mat2[0][2] = 0.000000 dest[2][2] = 0.000000
iterals: 2, 2, 1 mat1[2][1] = 20.000000 mat2[1][2] = 1.000000 dest[2][2] = 20.000000
iterals: 2, 2, 2 mat1[2][2] = 0.000000 mat2[2][2] = 0.000000 dest[2][2] = 20.000000
iterals: 2, 3, 0 mat1[2][0] = 0.000000 mat2[0][3] = 0.000000 dest[2][3] = 0.000000
iterals: 2, 3, 1 mat1[2][1] = 20.000000 mat2[1][3] = 0.000000 dest[2][3] = 0.000000
iterals: 2, 3, 2 mat1[2][2] = 0.000000 mat2[2][3] = 0.000000 dest[2][3] = 0.000000
iterals: 2, 4, 0 mat1[2][0] = 0.000000 mat2[0][4] = 0.000000 dest[2][4] = 0.000000
iterals: 2, 4, 1 mat1[2][1] = 20.000000 mat2[1][4] = 0.000000 dest[2][4] = 0.000000
iterals: 2, 4, 2 mat1[2][2] = 0.000000 mat2[2][4] = 1.000000 dest[2][4] = 0.000000
iterals: 2, 5, 0 mat1[2][0] = 0.000000 mat2[0][5] = 0.000000 dest[2][5] = 0.000000
iterals: 2, 5, 1 mat1[2][1] = 20.000000 mat2[1][5] = 0.000000 dest[2][5] = 0.000000
iterals: 2, 5, 2 mat1[2][2] = 0.000000 mat2[2][5] = 0.000000 dest[2][5] = 0.000000
iterals: 3, 0, 0 mat1[3][0] = 0.000000 mat2[0][0] = 0.000000 dest[3][0] = 0.000000
iterals: 3, 0, 1 mat1[3][1] = 0.000000 mat2[1][0] = 20.000000 dest[3][0] = 0.000000
iterals: 3, 0, 2 mat1[3][2] = 0.000000 mat2[2][0] = 0.000000 dest[3][0] = 0.000000
iterals: 3, 1, 0 mat1[3][0] = 0.000000 mat2[0][1] = 0.000000 dest[3][1] = 0.000000
iterals: 3, 1, 1 mat1[3][1] = 0.000000 mat2[1][1] = 0.000000 dest[3][1] = 0.000000
iterals: 3, 1, 2 mat1[3][2] = 0.000000 mat2[2][1] = 0.000000 dest[3][1] = 0.000000
iterals: 3, 2, 0 mat1[3][0] = 0.000000 mat2[0][2] = 0.000000 dest[3][2] = 0.000000
iterals: 3, 2, 1 mat1[3][1] = 0.000000 mat2[1][2] = 0.000000 dest[3][2] = 0.000000
iterals: 3, 2, 2 mat1[3][2] = 0.000000 mat2[2][2] = 0.000000 dest[3][2] = 0.000000
iterals: 3, 3, 0 mat1[3][0] = 0.000000 mat2[0][3] = 0.000000 dest[3][3] = 0.000000
iterals: 3, 3, 1 mat1[3][1] = 0.000000 mat2[1][3] = 0.000000 dest[3][3] = 0.000000
iterals: 3, 3, 2 mat1[3][2] = 0.000000 mat2[2][3] = 0.000000 dest[3][3] = 0.000000
iterals: 3, 4, 0 mat1[3][0] = 0.000000 mat2[0][4] = 0.000000 dest[3][4] = 0.000000
iterals: 3, 4, 1 mat1[3][1] = 0.000000 mat2[1][4] = 0.000000 dest[3][4] = 0.000000
iterals: 3, 4, 2 mat1[3][2] = 0.000000 mat2[2][4] = 1.000000 dest[3][4] = 0.000000
iterals: 3, 5, 0 mat1[3][0] = 0.000000 mat2[0][5] = 0.000000 dest[3][5] = 0.000000
iterals: 3, 5, 1 mat1[3][1] = 0.000000 mat2[1][5] = 0.000000 dest[3][5] = 0.000000
iterals: 3, 5, 2 mat1[3][2] = 0.000000 mat2[2][5] = 0.000000 dest[3][5] = 0.000000
iterals: 4, 0, 0 mat1[4][0] = 0.000000 mat2[0][0] = 0.000000 dest[4][0] = 0.000000
iterals: 4, 0, 1 mat1[4][1] = 0.000000 mat2[1][0] = 20.000000 dest[4][0] = 0.000000
iterals: 4, 0, 2 mat1[4][2] = 30.000000 mat2[2][0] = 0.000000 dest[4][0] = 0.000000
iterals: 4, 1, 0 mat1[4][0] = 0.000000 mat2[0][1] = 0.000000 dest[4][1] = 0.000000
iterals: 4, 1, 1 mat1[4][1] = 0.000000 mat2[1][1] = 0.000000 dest[4][1] = 0.000000
iterals: 4, 1, 2 mat1[4][2] = 30.000000 mat2[2][1] = 0.000000 dest[4][1] = 0.000000
iterals: 4, 2, 0 mat1[4][0] = 0.000000 mat2[0][2] = 0.000000 dest[4][2] = 0.000000
iterals: 4, 2, 1 mat1[4][1] = 0.000000 mat2[1][2] = 0.000000 dest[4][2] = 0.000000
iterals: 4, 2, 2 mat1[4][2] = 30.000000 mat2[2][2] = 0.000000 dest[4][2] = 0.000000
iterals: 4, 3, 0 mat1[4][0] = 0.000000 mat2[0][3] = 0.000000 dest[4][3] = 0.000000
iterals: 4, 3, 1 mat1[4][1] = 0.000000 mat2[1][3] = 0.000000 dest[4][3] = 0.000000
iterals: 4, 3, 2 mat1[4][2] = 30.000000 mat2[2][3] = 0.000000 dest[4][3] = 0.000000
iterals: 4, 4, 0 mat1[4][0] = 0.000000 mat2[0][4] = 0.000000 dest[4][4] = 0.000000
iterals: 4, 4, 1 mat1[4][1] = 0.000000 mat2[1][4] = 0.000000 dest[4][4] = 0.000000
iterals: 4, 4, 2 mat1[4][2] = 30.000000 mat2[2][4] = 0.000000 dest[4][4] = 0.000000
iterals: 4, 5, 0 mat1[4][0] = 0.000000 mat2[0][5] = 0.000000 dest[4][5] = 0.000000
iterals: 4, 5, 1 mat1[4][1] = 0.000000 mat2[1][5] = 0.000000 dest[4][5] = 0.000000
iterals: 4, 5, 2 mat1[4][2] = 30.000000 mat2[2][5] = 0.000000 dest[4][5] = 0.000000
iterals: 5, 0, 0 mat1[5][0] = 0.000000 mat2[0][0] = 0.000000 dest[5][0] = 0.000000
iterals: 5, 0, 1 mat1[5][1] = 0.000000 mat2[1][0] = 20.000000 dest[5][0] = 0.000000
iterals: 5, 0, 2 mat1[5][2] = 0.000000 mat2[2][0] = 0.000000 dest[5][0] = 0.000000
iterals: 5, 1, 0 mat1[5][0] = 0.000000 mat2[0][1] = 0.000000 dest[5][1] = 0.000000
iterals: 5, 1, 1 mat1[5][1] = 0.000000 mat2[1][1] = 0.000000 dest[5][1] = 0.000000
iterals: 5, 1, 2 mat1[5][2] = 0.000000 mat2[2][1] = 0.000000 dest[5][1] = 0.000000
iterals: 5, 2, 0 mat1[5][0] = 0.000000 mat2[0][2] = 0.000000 dest[5][2] = 0.000000
iterals: 5, 2, 1 mat1[5][1] = 0.000000 mat2[1][2] = 0.000000 dest[5][2] = 0.000000
iterals: 5, 2, 2 mat1[5][2] = 0.000000 mat2[2][2] = 0.000000 dest[5][2] = 0.000000
iterals: 5, 3, 0 mat1[5][0] = 0.000000 mat2[0][3] = 0.000000 dest[5][3] = 0.000000
iterals: 5, 3, 1 mat1[5][1] = 0.000000 mat2[1][3] = 0.000000 dest[5][3] = 0.000000
iterals: 5, 3, 2 mat1[5][2] = 0.000000 mat2[2][3] = 0.000000 dest[5][3] = 0.000000
iterals: 5, 4, 0 mat1[5][0] = 0.000000 mat2[0][4] = 0.000000 dest[5][4] = 0.000000
iterals: 5, 4, 1 mat1[5][1] = 0.000000 mat2[1][4] = 0.000000 dest[5][4] = 0.000000
iterals: 5, 4, 2 mat1[5][2] = 0.000000 mat2[2][4] = 0.000000 dest[5][4] = 0.000000
iterals: 5, 5, 0 mat1[5][0] = 0.000000 mat2[0][5] = 0.000000 dest[5][5] = 0.000000
iterals: 5, 5, 1 mat1[5][1] = 0.000000 mat2[1][5] = 0.000000 dest[5][5] = 0.000000
iterals: 5, 5, 2 mat1[5][2] = 0.000000 mat2[2][5] = 0.000000 dest[5][5] = 0.000000
#include<stdio.h>
void prod(float mat1[][6], float mat2[][6], float dest[][6], int m1, int n1, int n2) {
printf("orders: %d, %d, %d\n", m1, n1, n2);
int i, j, k; // kmax = n1, jmax = n2, imax = m1
for (i = 0; i < m1; i++) {
for (j = 0; j < n2; j++) {
dest[i][j] = 0;
for (k = 0; k < n1; k++) {
dest[i][j] += mat1[i][k]*mat2[k][j];
printf("iterals: %d, %d, %d\t", i, j, k);
printf("mat1[%d][%d] = %f\t", i, k, mat1[i][k]);
printf("mat2[%d][%d] = %f\t", k, j, mat2[k][j]);
printf("dest[%d][%d] = %f\n", i, j, dest[i][j]);
}
}
}
}
void main() {
float res[][6] = { 0 };
float G[][6] = { {10, 0, 0},
{ 0, 0, 0},
{ 0, 20, 0},
{ 0, 0, 0},
{ 0, 0, 30},
{ 0, 0, 0} };
float H[][6] = { {1, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0} };
prod(G, H, res, 6, 3, 6);
}
以下是源代码:
iterals: 0, 0, 0 mat1[0][0] = 10.000000 mat2[0][0] = 1.000000 dest[0][0] = 10.000000
iterals: 0, 0, 1 mat1[0][1] = 0.000000 mat2[1][0] = 0.000000 dest[0][0] = 10.000000
iterals: 0, 0, 2 mat1[0][2] = 0.000000 mat2[2][0] = 0.000000 dest[0][0] = 10.000000
iterals: 0, 1, 0 mat1[0][0] = 10.000000 mat2[0][1] = 0.000000 dest[0][1] = 0.000000
iterals: 0, 1, 1 mat1[0][1] = 0.000000 mat2[1][1] = 0.000000 dest[0][1] = 0.000000
iterals: 0, 1, 2 mat1[0][2] = 0.000000 mat2[2][1] = 0.000000 dest[0][1] = 0.000000
iterals: 0, 2, 0 mat1[0][0] = 10.000000 mat2[0][2] = 0.000000 dest[0][2] = 0.000000
iterals: 0, 2, 1 mat1[0][1] = 0.000000 mat2[1][2] = 1.000000 dest[0][2] = 0.000000
iterals: 0, 2, 2 mat1[0][2] = 0.000000 mat2[2][2] = 0.000000 dest[0][2] = 0.000000
iterals: 0, 3, 0 mat1[0][0] = 10.000000 mat2[0][3] = 0.000000 dest[0][3] = 0.000000
iterals: 0, 3, 1 mat1[0][1] = 0.000000 mat2[1][3] = 0.000000 dest[0][3] = 0.000000
iterals: 0, 3, 2 mat1[0][2] = 0.000000 mat2[2][3] = 0.000000 dest[0][3] = 0.000000
iterals: 0, 4, 0 mat1[0][0] = 10.000000 mat2[0][4] = 0.000000 dest[0][4] = 0.000000
iterals: 0, 4, 1 mat1[0][1] = 0.000000 mat2[1][4] = 0.000000 dest[0][4] = 0.000000
iterals: 0, 4, 2 mat1[0][2] = 0.000000 mat2[2][4] = 1.000000 dest[0][4] = 0.000000
iterals: 0, 5, 0 mat1[0][0] = 10.000000 mat2[0][5] = 0.000000 dest[0][5] = 0.000000
iterals: 0, 5, 1 mat1[0][1] = 0.000000 mat2[1][5] = 0.000000 dest[0][5] = 0.000000
iterals: 0, 5, 2 mat1[0][2] = 0.000000 mat2[2][5] = 0.000000 dest[0][5] = 0.000000
iterals: 1, 0, 0 mat1[1][0] = 0.000000 mat2[0][0] = 1.000000 dest[1][0] = 0.000000
iterals: 1, 0, 1 mat1[1][1] = 0.000000 mat2[1][0] = 0.000000 dest[1][0] = 0.000000
iterals: 1, 0, 2 mat1[1][2] = 0.000000 mat2[2][0] = 0.000000 dest[1][0] = 0.000000
iterals: 1, 1, 0 mat1[1][0] = 0.000000 mat2[0][1] = 0.000000 dest[1][1] = 0.000000
iterals: 1, 1, 1 mat1[1][1] = 0.000000 mat2[1][1] = 0.000000 dest[1][1] = 0.000000
iterals: 1, 1, 2 mat1[1][2] = 0.000000 mat2[2][1] = 0.000000 dest[1][1] = 0.000000
iterals: 1, 2, 0 mat1[1][0] = 0.000000 mat2[0][2] = 0.000000 dest[1][2] = 0.000000
iterals: 1, 2, 1 mat1[1][1] = 0.000000 mat2[1][2] = 1.000000 dest[1][2] = 0.000000
iterals: 1, 2, 2 mat1[1][2] = 0.000000 mat2[2][2] = 0.000000 dest[1][2] = 0.000000
iterals: 1, 3, 0 mat1[1][0] = 0.000000 mat2[0][3] = 0.000000 dest[1][3] = 0.000000
iterals: 1, 3, 1 mat1[1][1] = 0.000000 mat2[1][3] = 0.000000 dest[1][3] = 0.000000
iterals: 1, 3, 2 mat1[1][2] = 0.000000 mat2[2][3] = 0.000000 dest[1][3] = 0.000000
iterals: 1, 4, 0 mat1[1][0] = 0.000000 mat2[0][4] = 0.000000 dest[1][4] = 0.000000
iterals: 1, 4, 1 mat1[1][1] = 0.000000 mat2[1][4] = 0.000000 dest[1][4] = 0.000000
iterals: 1, 4, 2 mat1[1][2] = 0.000000 mat2[2][4] = 1.000000 dest[1][4] = 0.000000
iterals: 1, 5, 0 mat1[1][0] = 0.000000 mat2[0][5] = 0.000000 dest[1][5] = 0.000000
iterals: 1, 5, 1 mat1[1][1] = 0.000000 mat2[1][5] = 0.000000 dest[1][5] = 0.000000
iterals: 1, 5, 2 mat1[1][2] = 0.000000 mat2[2][5] = 0.000000 dest[1][5] = 0.000000
iterals: 2, 0, 0 mat1[2][0] = 0.000000 mat2[0][0] = 0.000000 dest[2][0] = 0.000000
iterals: 2, 0, 1 mat1[2][1] = 20.000000 mat2[1][0] = 0.000000 dest[2][0] = 0.000000
iterals: 2, 0, 2 mat1[2][2] = 0.000000 mat2[2][0] = 0.000000 dest[2][0] = 0.000000
iterals: 2, 1, 0 mat1[2][0] = 0.000000 mat2[0][1] = 0.000000 dest[2][1] = 0.000000
iterals: 2, 1, 1 mat1[2][1] = 20.000000 mat2[1][1] = 0.000000 dest[2][1] = 0.000000
iterals: 2, 1, 2 mat1[2][2] = 0.000000 mat2[2][1] = 0.000000 dest[2][1] = 0.000000
iterals: 2, 2, 0 mat1[2][0] = 0.000000 mat2[0][2] = 0.000000 dest[2][2] = 0.000000
iterals: 2, 2, 1 mat1[2][1] = 20.000000 mat2[1][2] = 1.000000 dest[2][2] = 20.000000
iterals: 2, 2, 2 mat1[2][2] = 0.000000 mat2[2][2] = 0.000000 dest[2][2] = 20.000000
iterals: 2, 3, 0 mat1[2][0] = 0.000000 mat2[0][3] = 0.000000 dest[2][3] = 0.000000
iterals: 2, 3, 1 mat1[2][1] = 20.000000 mat2[1][3] = 0.000000 dest[2][3] = 0.000000
iterals: 2, 3, 2 mat1[2][2] = 0.000000 mat2[2][3] = 0.000000 dest[2][3] = 0.000000
iterals: 2, 4, 0 mat1[2][0] = 0.000000 mat2[0][4] = 0.000000 dest[2][4] = 0.000000
iterals: 2, 4, 1 mat1[2][1] = 20.000000 mat2[1][4] = 0.000000 dest[2][4] = 0.000000
iterals: 2, 4, 2 mat1[2][2] = 0.000000 mat2[2][4] = 1.000000 dest[2][4] = 0.000000
iterals: 2, 5, 0 mat1[2][0] = 0.000000 mat2[0][5] = 0.000000 dest[2][5] = 0.000000
iterals: 2, 5, 1 mat1[2][1] = 20.000000 mat2[1][5] = 0.000000 dest[2][5] = 0.000000
iterals: 2, 5, 2 mat1[2][2] = 0.000000 mat2[2][5] = 0.000000 dest[2][5] = 0.000000
iterals: 3, 0, 0 mat1[3][0] = 0.000000 mat2[0][0] = 0.000000 dest[3][0] = 0.000000
iterals: 3, 0, 1 mat1[3][1] = 0.000000 mat2[1][0] = 20.000000 dest[3][0] = 0.000000
iterals: 3, 0, 2 mat1[3][2] = 0.000000 mat2[2][0] = 0.000000 dest[3][0] = 0.000000
iterals: 3, 1, 0 mat1[3][0] = 0.000000 mat2[0][1] = 0.000000 dest[3][1] = 0.000000
iterals: 3, 1, 1 mat1[3][1] = 0.000000 mat2[1][1] = 0.000000 dest[3][1] = 0.000000
iterals: 3, 1, 2 mat1[3][2] = 0.000000 mat2[2][1] = 0.000000 dest[3][1] = 0.000000
iterals: 3, 2, 0 mat1[3][0] = 0.000000 mat2[0][2] = 0.000000 dest[3][2] = 0.000000
iterals: 3, 2, 1 mat1[3][1] = 0.000000 mat2[1][2] = 0.000000 dest[3][2] = 0.000000
iterals: 3, 2, 2 mat1[3][2] = 0.000000 mat2[2][2] = 0.000000 dest[3][2] = 0.000000
iterals: 3, 3, 0 mat1[3][0] = 0.000000 mat2[0][3] = 0.000000 dest[3][3] = 0.000000
iterals: 3, 3, 1 mat1[3][1] = 0.000000 mat2[1][3] = 0.000000 dest[3][3] = 0.000000
iterals: 3, 3, 2 mat1[3][2] = 0.000000 mat2[2][3] = 0.000000 dest[3][3] = 0.000000
iterals: 3, 4, 0 mat1[3][0] = 0.000000 mat2[0][4] = 0.000000 dest[3][4] = 0.000000
iterals: 3, 4, 1 mat1[3][1] = 0.000000 mat2[1][4] = 0.000000 dest[3][4] = 0.000000
iterals: 3, 4, 2 mat1[3][2] = 0.000000 mat2[2][4] = 1.000000 dest[3][4] = 0.000000
iterals: 3, 5, 0 mat1[3][0] = 0.000000 mat2[0][5] = 0.000000 dest[3][5] = 0.000000
iterals: 3, 5, 1 mat1[3][1] = 0.000000 mat2[1][5] = 0.000000 dest[3][5] = 0.000000
iterals: 3, 5, 2 mat1[3][2] = 0.000000 mat2[2][5] = 0.000000 dest[3][5] = 0.000000
iterals: 4, 0, 0 mat1[4][0] = 0.000000 mat2[0][0] = 0.000000 dest[4][0] = 0.000000
iterals: 4, 0, 1 mat1[4][1] = 0.000000 mat2[1][0] = 20.000000 dest[4][0] = 0.000000
iterals: 4, 0, 2 mat1[4][2] = 30.000000 mat2[2][0] = 0.000000 dest[4][0] = 0.000000
iterals: 4, 1, 0 mat1[4][0] = 0.000000 mat2[0][1] = 0.000000 dest[4][1] = 0.000000
iterals: 4, 1, 1 mat1[4][1] = 0.000000 mat2[1][1] = 0.000000 dest[4][1] = 0.000000
iterals: 4, 1, 2 mat1[4][2] = 30.000000 mat2[2][1] = 0.000000 dest[4][1] = 0.000000
iterals: 4, 2, 0 mat1[4][0] = 0.000000 mat2[0][2] = 0.000000 dest[4][2] = 0.000000
iterals: 4, 2, 1 mat1[4][1] = 0.000000 mat2[1][2] = 0.000000 dest[4][2] = 0.000000
iterals: 4, 2, 2 mat1[4][2] = 30.000000 mat2[2][2] = 0.000000 dest[4][2] = 0.000000
iterals: 4, 3, 0 mat1[4][0] = 0.000000 mat2[0][3] = 0.000000 dest[4][3] = 0.000000
iterals: 4, 3, 1 mat1[4][1] = 0.000000 mat2[1][3] = 0.000000 dest[4][3] = 0.000000
iterals: 4, 3, 2 mat1[4][2] = 30.000000 mat2[2][3] = 0.000000 dest[4][3] = 0.000000
iterals: 4, 4, 0 mat1[4][0] = 0.000000 mat2[0][4] = 0.000000 dest[4][4] = 0.000000
iterals: 4, 4, 1 mat1[4][1] = 0.000000 mat2[1][4] = 0.000000 dest[4][4] = 0.000000
iterals: 4, 4, 2 mat1[4][2] = 30.000000 mat2[2][4] = 0.000000 dest[4][4] = 0.000000
iterals: 4, 5, 0 mat1[4][0] = 0.000000 mat2[0][5] = 0.000000 dest[4][5] = 0.000000
iterals: 4, 5, 1 mat1[4][1] = 0.000000 mat2[1][5] = 0.000000 dest[4][5] = 0.000000
iterals: 4, 5, 2 mat1[4][2] = 30.000000 mat2[2][5] = 0.000000 dest[4][5] = 0.000000
iterals: 5, 0, 0 mat1[5][0] = 0.000000 mat2[0][0] = 0.000000 dest[5][0] = 0.000000
iterals: 5, 0, 1 mat1[5][1] = 0.000000 mat2[1][0] = 20.000000 dest[5][0] = 0.000000
iterals: 5, 0, 2 mat1[5][2] = 0.000000 mat2[2][0] = 0.000000 dest[5][0] = 0.000000
iterals: 5, 1, 0 mat1[5][0] = 0.000000 mat2[0][1] = 0.000000 dest[5][1] = 0.000000
iterals: 5, 1, 1 mat1[5][1] = 0.000000 mat2[1][1] = 0.000000 dest[5][1] = 0.000000
iterals: 5, 1, 2 mat1[5][2] = 0.000000 mat2[2][1] = 0.000000 dest[5][1] = 0.000000
iterals: 5, 2, 0 mat1[5][0] = 0.000000 mat2[0][2] = 0.000000 dest[5][2] = 0.000000
iterals: 5, 2, 1 mat1[5][1] = 0.000000 mat2[1][2] = 0.000000 dest[5][2] = 0.000000
iterals: 5, 2, 2 mat1[5][2] = 0.000000 mat2[2][2] = 0.000000 dest[5][2] = 0.000000
iterals: 5, 3, 0 mat1[5][0] = 0.000000 mat2[0][3] = 0.000000 dest[5][3] = 0.000000
iterals: 5, 3, 1 mat1[5][1] = 0.000000 mat2[1][3] = 0.000000 dest[5][3] = 0.000000
iterals: 5, 3, 2 mat1[5][2] = 0.000000 mat2[2][3] = 0.000000 dest[5][3] = 0.000000
iterals: 5, 4, 0 mat1[5][0] = 0.000000 mat2[0][4] = 0.000000 dest[5][4] = 0.000000
iterals: 5, 4, 1 mat1[5][1] = 0.000000 mat2[1][4] = 0.000000 dest[5][4] = 0.000000
iterals: 5, 4, 2 mat1[5][2] = 0.000000 mat2[2][4] = 0.000000 dest[5][4] = 0.000000
iterals: 5, 5, 0 mat1[5][0] = 0.000000 mat2[0][5] = 0.000000 dest[5][5] = 0.000000
iterals: 5, 5, 1 mat1[5][1] = 0.000000 mat2[1][5] = 0.000000 dest[5][5] = 0.000000
iterals: 5, 5, 2 mat1[5][2] = 0.000000 mat2[2][5] = 0.000000 dest[5][5] = 0.000000
#include<stdio.h>
void prod(float mat1[][6], float mat2[][6], float dest[][6], int m1, int n1, int n2) {
printf("orders: %d, %d, %d\n", m1, n1, n2);
int i, j, k; // kmax = n1, jmax = n2, imax = m1
for (i = 0; i < m1; i++) {
for (j = 0; j < n2; j++) {
dest[i][j] = 0;
for (k = 0; k < n1; k++) {
dest[i][j] += mat1[i][k]*mat2[k][j];
printf("iterals: %d, %d, %d\t", i, j, k);
printf("mat1[%d][%d] = %f\t", i, k, mat1[i][k]);
printf("mat2[%d][%d] = %f\t", k, j, mat2[k][j]);
printf("dest[%d][%d] = %f\n", i, j, dest[i][j]);
}
}
}
}
void main() {
float res[][6] = { 0 };
float G[][6] = { {10, 0, 0},
{ 0, 0, 0},
{ 0, 20, 0},
{ 0, 0, 0},
{ 0, 0, 30},
{ 0, 0, 0} };
float H[][6] = { {1, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0} };
prod(G, H, res, 6, 3, 6);
}
#包括
无效生产(浮动物料1[][6]、浮动物料2[][6]、浮动目的地[][6]、整数m1、整数n1、整数n2){
printf(“订单:%d,%d,%d\n”、m1、n1、n2);
int i,j,k;//kmax=n1,jmax=n2,imax=m1
对于(i=0;i
float res[][6]={0}
是一个浮点res[1][6]代码>而不是一个float res[6][6]代码>如您所需。如果没有完整的初始值设定项列表,则需要写出所有维度
另外,void main()
应该是int main(void)
您的G
初始值设定项列表也不适合float G[][6]
,它应该是float G[][3]
下面是完整的代码:float res[][6]={0}
是一个浮点res[1][6]代码>而不是一个float res[6][6]代码>如您所需。如果没有完整的初始值设定项列表,则需要写出所有维度
另外,void main()
应该是int main(void)
您的G
初始值设定项列表也不适合float G[][6]
,它应该是float G[][3]
以下是完整的代码:
您的G
矩阵没有6列。它有3列,定义如下
float G[][3]
结果矩阵需要一个大小
float res[6][6] = { 0 };
您应该将main定义为intmain(void)
功能定义也应更改如下
void prod(float mat1[][3], float mat2[][6], float dest[][6], int m1, int n1, int n2) {
您的G
矩阵没有6列。它有3列,定义如下
float G[][3]
结果矩阵需要一个大小
float res[6][6] = { 0 };
您应该将main定义为intmain(void)
功能定义也应更改如下
void prod(float mat1[][3], float mat2[][6], float dest[][6], int m1, int n1, int n2) {
除了float res[][6]={0}代码>太小了,这是别人说的,还有其他问题存在
考虑将mat1[][6]、mat2[][6]、dest[][6]
视为mat1[a][b]、mat2[b][c]、dest[a][c]
,以获得更清晰、更灵活的代码
在C99和可选的C11中,参数可以是a,这简化了编码。
看
void prod(int a、int b、int c、float mat1[a][b]、float mat2[b][c]、float dest[a][c]){
printf(“订单:%d,%d,%d\n”,a、b、c);
对于(int ai=0;ai
除了浮点res[][6]={0}代码>太小了,这是别人说的,还有其他问题存在
考虑将mat1[][6]、mat2[][6]、dest[][6]
视为mat1[a][b]、mat2[b][c]、dest[a][c]
,以获得更清晰、更灵活的代码
在C99和可选的C11中,参数可以是a,这简化了编码。
看
void prod(int a、int b、int c、float mat1[a][b]、float mat2[b][c]、float dest[a][c]){
printf(“订单:%d,%d,%d\n”,a、b、c);
对于(int ai=0;ai