8.5矩阵运算,A是一个x行,y列矩阵,B是y行z列矩阵,把A和B相乘,结果是另外一个x行z列矩阵,每个位置的值由下公式决定,编写函数:
#include <stdio.h>
void matrix_mutiply(int *m1, int *m2, int *r, int x, int y, int z)
{
	//sum为求和值
	int i, j, k, sum;
	for(i = 0; i < x; i++){
		for(j = 0; j < z; j++){
			//对i行j列的矩阵求值
			for(sum = 0, k = 0; k < y; k++){
				//由于m1 m2 r均为一维数组,矩阵上的i 行 j位,对应的一维坐标为 i * 列数 + j
				sum += m1[ i * y + k ] * m2[ k * z + j ];
			}
			r[i * z + j] = sum;
		}
	}
}
int main()
{
	int m1[6] = { 2, -6,  3,  5,  1, -1 };
	int m2[8] = { 4, -2, -4, -5, -7, -3, 6, 7};
	int r[12] = {};
	matrix_mutiply(m1, m2, r, 3, 2, 4);
	int x, y;
	for(x = 0; x < 3; x++){
		for(y = 0; y < 4; y++){
			printf("%5d\t", r[x * 4 + y]);
		}
		printf("\n");
	}
    return 0;
}
输出:

原文:http://www.cnblogs.com/yangxunwu1992/p/5801351.html