#include<stdio.h>
#include<stdlib.h>
#define N 10
int* MatrixMultiplication(int A[],int B[],int m,int n1,int s)
{
int i,k,j;
int *c=(int *)malloc(N*sizeof(int *));
for(i=0;i<m;i++) //i控制矩阵C的行
{
for(j=0;j<s;j++) //j控制矩阵C的列
{
int sum=0;
for(k=0;k<n1; k++) //k控制矩阵A的行,也是B的列
sum=sum+A[i*n1+k]*B[k*s+j];
c[i*s+j]=sum;
}
}
return c;
}
int main()
{
int A[N*N];
int B[N*N];
int *C=(int *)malloc(N*sizeof(int *));
int i,k,j;
int m,n1,n2,s;
do{
printf("请输入A矩阵行列数:");
scanf("%d%d",&m,&n1);
printf("请输入B矩阵行列数:");
scanf("%d%d",&n2,&s);
}while(n1!=n2);//直到A的列与B的行相等,跳出
for(i=0;i<m;i++)
{
printf("请输入A矩阵第%d行:",i+1);
for(j=0;j<n1;j++)
{
scanf("%d",&A[i*m+j]);
}
}
for(i=0;i<n2;i++)
{
printf("请输入B矩阵第%d行:",i+1);
for(j=0;j<s;j++)
{
scanf("%d",&B[i*n2+j]);
}
}
C=MatrixMultiplication(A,B,m,n1,s);
printf("C矩阵为:\n");
for(i=0;i<m;i++)
{
for(j=0;j<s;j++)
printf("%d ", C[i*m+j]);
printf("\n");
}
return 0;
}
矩阵乘法(C语言)
最新推荐文章于 2024-08-02 23:27:55 发布