首页 > 专题系列 > C基础练习 > C语言程序设计-矩阵乘法[数组应用]
2013
11-19

C语言程序设计-矩阵乘法[数组应用]

10042 矩阵乘法

【问题描述】已知矩阵A(m*n)和B(n*p),求C=A*B。
【输入形式】第一行三个整数为m,n,p(m,n,p均小于10),从第二行开始为m行n列A矩阵,然后为n行p列的B矩阵。
                      所有数据之间均由一个空格分隔。
【输出形式】输出m行p列的C矩阵,所有数据之间均由一个空格分隔,输出的每一个数据后面跟一个空格。
【样例输入】2 3 4
                    1 0 3
                     3 4 0
                     1 0 2 1
                     2 3 4 5
                     2 1 1 5
【样例输出】7 3 5 16
                    11 12 22 23
【样例说明】最后得到的2行4列的矩阵如上图所示。
【评分标准】本题共2个测试点,每个测试点0.5分,全部通过得1.0分。

#include <stdio.h>
int m1[12][12], m2[12][12], m3[12][12];
int m,pattern_len,p;
int main() {
	scanf("%d%d%d", &m, &pattern_len, &p);

	for(int i=0; i<m; i++)
		for(int j=0; j<pattern_len; j++)
			scanf("%d", &m1[i][j]);

	for(int i=0; i<pattern_len; i++)
		for(int j=0; j<p; j++)
			scanf("%d", &m2[i][j]);


	for(int i=0; i<m; i++){
		for(int j=0; j<p; j++){
			m3[i][j] = 0;
			for(int k=0; k<pattern_len; k++){
				m3[i][j] += m1[i][k] * m2[k][j];
			}
			printf("%d ", m3[i][j]);
		}
		puts("");
	}

	return 0;
}