矩阵相乘

来源:互联网 发布:机器手编程语言 编辑:程序博客网 时间:2024/06/05 17:09
#define MAX 10void js(int m,int n,int p,long jz1[MAX][MAX],long jz2[MAX][MAX],long jz3[MAX][MAX]){int i,j,k;long lSum;for(i=0;i<m;i++)//矩阵1的行  for(j=0;j<p;j++)//矩阵2的行  {   lSum=0;   for(k=0;k<n;k++)//矩阵1和2的列    lSum+=jz1[i][k]*jz2[k][j];   jz3[i][j]=lSum;  }//运算过程是先让矩阵1的第一行乘以矩阵2 的第一列,结果放矩阵3 的第一个位置。以此类推} int main(){long jz1[MAX][MAX],jz2[MAX][MAX];//定义的两个相乘的矩阵long jz3[MAX][MAX],x;int i,j,m,n,p;/*输入两个矩阵的的行列数m,n,p*/printf("\n请输入矩阵1的行:\n");scanf("%d",&m);printf("请输入矩阵1的列:\n");scanf("%d",&n);printf("请输入矩阵2的行:\n");scanf("%d",&p);/*输入第一个矩阵的每个元素*/printf("\n请输入第一个矩阵的元素:\n");for(i=0;i<m;i++)  for(j=0;j<n;j++)  {   scanf("%ld",&x);   jz1[i][j]=x;  }/*输入第二个矩阵的每个元素*/printf("\n输入第二个矩阵的每个元素");for(i=0;i<n;i++)  for(j=0;j<p;j++)  {   scanf("%ld",&x);   jz2[i][j]=x;  }js(m,n,p,jz1,jz2,jz3);printf("\nResult: \n");for(i=0;i<m;i++){  for(j=0;j<p;j++)  printf("%ld ",jz3[i][j]);  printf("\n");}}