#include<stdio.h>#include<stdlib.h>#define MAX 100void MatrixMultiply(int a[][MAX], int b[][MAX], int c[][MAX], int ra, int ca, int rb, int cb){ int i, j, k; int sum = 0; if (ca != rb) //如果a的列数不等于b的行数就不能相乘 { PRintf("ERROR!"); } for (i = 0; i < ra; i++) //a是一行一行与b相乘的 { for (j = 0; j < cb; j++)//b是一行一行与a相乘的 { sum = a[i][0] * b[0][j]; for (k = 1; k < ca; k++) { sum += a[i][k] * b[k][j];//前面的解决的是第一部分的a的列数为0的,b的行数为0的 } //这行代码解决的是后一部分a的列数大于0的,b的行数大于0的 c[i][j] = sum; } }}int main(void){ int i, j; int a[MAX][MAX]; int b[MAX][MAX]; int c[MAX][MAX]; int ra, ca; puts("请输入矩阵A的行与列:"); scanf("%d%d", &ra, &ca); int rb, cb; puts("请输入矩阵B的行与列:"); scanf("%d%d", &rb, &cb); puts("请输入矩阵A的具体数据:"); for (i = 0; i < ra; i++) { for (j = 0; j < ca; j++) { scanf("%d", &a[i][j]); } } puts("请输入矩阵B的具体数据;"); for (i = 0; i < rb; i++) { for (j = 0; j < cb; j++) { scanf("%d", &b[i][j]); } } MatrixMultiply(a, b, c, ra, ca, rb, cb); printf("矩阵相乘的结果:/n"); for (i = 0; i < ra; i++) { for (j = 0; j < cb; j++) { printf("%d ", c[i][j]); } printf("/n"); } printf("/n"); system("pause"); return 0;}