#include<stdio.h>
#define MaxSize 50
//矩阵转置
void transfrom(int a[][MaxSize],int b[][MaxSize],int m,int n){
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
b[j][i] = a[i][j];
}
}
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
}
//矩阵相加
void add(int a[][MaxSize],int b[][MaxSize],int c[][MaxSize],int m,int n){
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
c[i][j] = a[i][j] + b[i][j];
}
}
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
printf("%5d",c[i][j]);
}
printf("\n");
}
}
//矩阵相乘
void multi(int a[][MaxSize],int b[][MaxSize],int c[][MaxSize],int m,int n){
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
int temp;int sum = 0;
for(int k = 0;k < n;k++){
temp = a[i][j] * b[j][k];
sum = sum + temp;
}
c[i][j] = sum;
}
}
//输出展示
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
printf("%5d",c[i][j]);
}
printf("\n");
}
}
int main(){
// int a[][MaxSize] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
// int b[][MaxSize] = {{42,34,16},{10,1,2},{7,8,9},{1,2,3}};
int a[][MaxSize] = {{1,1,1},{1,1,1},{1,1,1},{1,1,1}};
int b[][MaxSize] = {{1,1,1},{1,1,1},{1,1,1},{1,1,1}};
int c[MaxSize][MaxSize];
//测试矩阵转置
// transfrom(a,b,4,3);
// int col = sizeof(b)/sizeof(b[0]); //行数
// int row = sizeof(b[0])/sizeof(b[0][0]); //列数
// 矩阵加法
// add(a,b,c,4,3);
multi(a,b,c,4,3);
return 0;
}