c语言矩阵相乘博客园c语言矩阵相乘

如题所述

关于c语言矩阵相乘 博客园,c语言矩阵相乘这个很多人还不知道,今天来为大家解答以上的问题,现在让我们一起来看看吧!
1、C语言实现矩阵相乘问题描述:编写程序,可以实现m*n矩阵和n*p矩阵相乘。
2、m,n,p均小于10,矩阵元素为整数。
3、分析:首先我们可以根据题意写出函数头。
4、可以定为void MatrixMutiply(int m,int n,int p,long lMatrix1[MAX][MAX],long lMatrix2[MAX][MAX],long lMatrixResult[MAX][MAX]),其中lMatrix1和lMatrix2分别是输入的m*n矩阵和n*p矩阵,lMatrixResult是输出的m*p矩阵。
5、因为m,n和p都是未知量,要进行处理的矩阵大小是变量。
6、但我们可以定义比较大的二维数组,只使用其中的部分数组元素。
7、矩阵相乘的算法比较简单,输入一个m*n矩阵和一个n*p矩阵,结果必然是m*p矩阵,有m*p个元素,每个元素都需要计算,可以使用m*p嵌套循环进行计算。
8、根据矩阵乘法公式:可以用循环直接套用上面的公式计算每个元素。
9、嵌套循环内部进行累加前,一定要注意对累加变量进行清零。
10、数据要求问题中的常量:#define MAX 10  /*矩阵最大行数和列数*/问题的输入:int m,n,p;   /*相乘的两个矩阵的行列数*/long lMatrix1[MAX][MAX],lMatrix2[MAX][MAX]; /*相乘的两个矩阵*/问题的输出:long lMatrixResult[MAX][MAX];    /*矩阵相乘后得到的矩阵*/初始算法1.输入两个矩阵的的行列数m,n,p;2.输入第一个矩阵的每个元素;3.输入第二个矩阵的每个元素;4.调用函数进行乘法运算,结果放在lMatrixResult 中;5. 打印输出结果矩阵。
11、算法细化算法的步骤4计算两个矩阵的乘法算法如下:4.1 定义循环变量i,j,k;4.2 嵌套循环计算结果矩阵(m*p)的每个元素。
12、程序代码如下:#define MAX 10void MatrixMutiply(int m,int n,int p,long lMatrix1[MAX][MAX],long lMatrix2[MAX][MAX],long lMatrixResult[MAX][MAX]){int i,j,k;long lSum;/*嵌套循环计算结果矩阵(m*p)的每个元素*/for(i=0;i<m;i++)  for(j=0;j<p;j++)  {   /*按照矩阵乘法的规则计算结果矩阵的i*j元素*/   lSum=0;   for(k=0;k<n;k++)    lSum+=lMatrix1[i][k]*lMatrix2[k][j];   lMatrixResult[i][j]=lSum;  }}main(){long lMatrix1[MAX][MAX],lMatrix2[MAX][MAX];long lMatrixResult[MAX][MAX],lTemp;int i,j,m,n,p;/*输入两个矩阵的的行列数m,n,p*/printf("Please input m of Matrix1:");scanf("%d",&m);printf("Please input n of Matrix1:");scanf("%d",&n);printf("Please input p of Matrix2:");scanf("%d",&p);/*输入第一个矩阵的每个元素*/printf("Please elements of Matrix1(%d*%d):",m,n);for(i=0;i<m;i++)  for(j=0;j<n;j++)  {   scanf("%ld",&lTemp);   lMatrix1[i][j]=lTemp;  }/*输入第二个矩阵的每个元素*/printf("Please elements of Matrix2(%d*%d):",n,p);for(i=0;i<n;i++)  for(j=0;j<p;j++)  {   scanf("%ld",&lTemp);   lMatrix2[i][j]=lTemp;  }/*调用函数进行乘法运算,结果放在lMatrixResult 中*/MatrixMutiply(m,n,p,lMatrix1,lMatrix2,lMatrixResult);/*打印输出结果矩阵*/printf("Result matrix: ");for(i=0;i<m;i++){  for(j=0;j<p;j++)   printf("%ld ",lMatrixResult[i][j]);  printf("");}}程序运行结果如下:Please input m of Matrix1:3Please input n of Matrix1:2Please input p of Matrix2:3Please elements of Matrix1(3*2):1 20 13 0Please elements of Matrix2(2*3):1 2 03 1 1Result matrix:7 4 23 1 13 6 0。
温馨提示:答案为网友推荐,仅供参考