#include<stdio.h>
#include<stdlib.h>
#define M 10
int main(void)
{
int Display(int array[M][M],int i,int j);
int a,b,c,d,i,j,k;
printf("请输入两个相乘矩阵的行数和列数,并用空格隔开:");
scanf("%d %d %d %d",&a,&b,&c,&d);
if(b!=c)
{
printf("无法相乘!\n");
return 0;
}//当第一个矩阵的列数不等于第二个矩阵的行数时无法相乘
int array1[M][M]={0};
int array2[M][M]={0};
printf("请输入第一个矩阵:\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("array1[%d][%d]=",i+1,j+1);
scanf("%d",&array1[i][j]);
}
}
printf("请输入第二个矩阵:\n");
for(i=0;i<c;i++)
{
for(j=0;j<d;j++)
{
printf("array2[%d][%d]=",i+1,j+1);
scanf("%d",&array2[i][j]);
}
}
/*用一个Display函数列出矩阵*/
printf("\n第一个矩阵为:\n");
Display(array1,a,b);
printf("\n第二个矩阵为:\n");
Display(array2,c,d);
/*核心代码:*/
int array3[M][M]={0};//array3[a][d]
int sum=0;
for(i=0;i<a;i++)
{
for(j=0;j<d;j++)
{
for(k=0;k<b;k++)
{
sum+=array1[i][k]*array2[k][j];
}
array3[i][j]=sum;
sum=0;
}
}
printf("\n乘积矩阵为:\n");
Display(array3,a,d);
return 0;
}
int Display(int array[M][M],int i,int j)
{
int a,b;
for(a=0;a<i;a++)
{
for(b=0;b<j;b++)
{
printf("%d\t",array[a][b]);
}
printf("\n");
}
}
核心代码及解释:
例题:
程序运行结果: