#include <stdio.h>
#include <string.h>
typedef struct MATRIX {
int mat[50][50];
}MAXRIX;
MATRIX mat_multiply(const MATRIX &a,const MATRIX &b,const int &n) {
static int i, j, k;
static MATRIX c;
memset(c.mat, 0, sizeof(c.mat));
for(i = 0;i < n;++i)
for(j = 0;j < n;++j)
for(k = 0;k < n;++k)
if(a.mat[i][k] && b.mat[k][j]) {
c.mat[i][j] += a.mat[i][k] * a.mat[k][j];
}
return c;
}
void print_matrix(const MATRIX &a,const int &n) {
static int i, j;
for(i = 0;i < n;++i) {
for(j = 0;j < n;++j)
printf("%3d ", a.mat[i][j]);
printf("\n");
}
}
int main() {
int n, i, j;
MATRIX a, b, c;
scanf("%d", &n);
printf("请输入a矩阵:\n");
// 输入a矩阵
for(i = 0;i < n;++i)
for(j = 0;j < n;++j)
scanf("%d", &a.mat[i][j]);
printf("请输入b矩阵:\n");
// 输入b矩阵
for(i = 0;i < n;++i)
for(j = 0;j < n;++j)
scanf("%d", &c.mat[i][j]);
c = mat_multiply(a, b, n);
// 打印c矩阵
print_matrix(c, n);
return 0;
}
#include <string.h>
typedef struct MATRIX {
int mat[50][50];
}MAXRIX;
MATRIX mat_multiply(const MATRIX &a,const MATRIX &b,const int &n) {
static int i, j, k;
static MATRIX c;
memset(c.mat, 0, sizeof(c.mat));
for(i = 0;i < n;++i)
for(j = 0;j < n;++j)
for(k = 0;k < n;++k)
if(a.mat[i][k] && b.mat[k][j]) {
c.mat[i][j] += a.mat[i][k] * a.mat[k][j];
}
return c;
}
void print_matrix(const MATRIX &a,const int &n) {
static int i, j;
for(i = 0;i < n;++i) {
for(j = 0;j < n;++j)
printf("%3d ", a.mat[i][j]);
printf("\n");
}
}
int main() {
int n, i, j;
MATRIX a, b, c;
scanf("%d", &n);
printf("请输入a矩阵:\n");
// 输入a矩阵
for(i = 0;i < n;++i)
for(j = 0;j < n;++j)
scanf("%d", &a.mat[i][j]);
printf("请输入b矩阵:\n");
// 输入b矩阵
for(i = 0;i < n;++i)
for(j = 0;j < n;++j)
scanf("%d", &c.mat[i][j]);
c = mat_multiply(a, b, n);
// 打印c矩阵
print_matrix(c, n);
return 0;
}