#include<stdio.h>
#include<stdlib.h>
void Print(int **a,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
int**MatrixMultiply(int **a,int **b,int **c,int x,int m,int n)
{
int i,j,k;
for(i=0;i<x;i++)
for(j=0;j<n;j++)
c[i][j]=0;
for(i=0;i<x;i++)
for(j=0;j<n;j++)
for(k=0;k<m;k++)
c[i][j]+=a[i][k]*b[k][j];
return c;
}
int main()
{
int **a,**b,**c;
int x,y,m,n,i,j;
printf("请输入第一个矩阵的行和列:");
scanf("%d %d",&x,&y);
printf("请输入第二个矩阵的行和列:");
scanf("%d %d",&m,&n);
while(y!=m)
{
printf("第一个的列和第二个的行不相等,请重新输入:");
scanf("%d %d",&m,&n);
if(y==m)
break;
}
a=(int**)malloc(sizeof(int*)*x);
b=(int**)malloc(sizeof(int*)*m);
c=(int**)malloc(sizeof(int*)*x);
for(i=0;i<x;i++)
a[i]=(int*)malloc(sizeof(int)*y);
for(i=0;i<m;i++)
b[i]=(int*)malloc(sizeof(int)*n);
for(i=0;i<x;i++)
c[i]=(int*)malloc(sizeof(int)*n);
printf("请输入第一个矩阵\n");
while(scanf("%d",&a[0][0])!=EOF)
{
for(i=1;i<y;i++)
scanf("%d",&a[0][i]);
for(i=1;i<x;i++)
for(j=0;j<y;j++)
scanf("%d",&a[i][j]);
printf("请输入第二个矩阵\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
printf("相乘之后的结果为:\n");
Print(MatrixMultiply(a,b,c,x,m,n),x,n);
}
return 0;
}
矩阵的乘法
最新推荐文章于 2024-10-10 19:43:55 发布