c语言矩阵的乘法

矩阵的乘法:

两个矩阵只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。

运算规则:

将第一个矩阵的第i行的每个元素分别乘上第二个矩阵第j列的每个元素然后进项相加,得到的结果就为新矩阵的第i行第j列的元素。

算法步骤:

1、首先我们要定义三个二维数组来存储第一个矩阵、第二个矩阵和相乘后得到的新矩阵。
2、对第一个、第二个矩阵的每个进行赋值(要注意的是我们需要让第一个矩阵的列数等于第二个矩阵的行数),然后将其打印出来。
3、使用for循环语句,先遍历第二个矩阵的第j列的每一个元素,然后将其与第一个元素的第i列的每一个元素进行相乘并相加。将其运算后的结果放在对应第i行第j列的新数组中。
4、再利用for循环将得到的新数组进行一个元素一个元素的输出。

#include<stdio.h>
 int main()
{
    
       int a[2][4], b[4][3], c[2][3];
    int i, j, k, sum; 
    printf("输入一个2×4的矩阵:\n"); 
    for(i=0;i<2;i++)                    //处理矩阵a中的一行中各元素
    	for(j=0;j<4;j++)               //处理矩阵a中某一列中各元素
			scanf("%d",&a[i][j]);   //输入数据
	printf("输入一个4×3的矩阵;\n"); 
	for(i=0;i<4;i++)                   //处理矩阵b中的一行中各元素
		for(j=0;j<3;j++)               //处理矩阵b中某一列中各元素
			scanf("%d",&b[i][j]);    //输入数据
	for(i=0;i<2;i++)                 //对矩阵c进行处理
	{
    
    	for(j=0;j<3;j++)             
		{
    
    	sum=0;
			for(k=0;k<4;k++)   //矩阵c中每一个元素的循环计算
			{
    
       
			  sum+=a[i][k]*b[k][j]; //对矩阵c中的某一元素进行计算
			}
			c[i][j]=sum;           //给矩阵c中的某一元素进行赋值
		}	
	}
	printf("得到一个2×3的矩阵:\n");
	for(i=0;i<2;i++)            //输出矩阵c
	{
    
    
		for(j=0;j<3;j++)	 
 			printf("%5d",c[i][j]);
 		printf("\n");
		 }
}

在这里插入图片描述以上的代码中只是一个特殊的例子,我们可以将2×4和4×3的矩阵改变成任意的n×m的矩阵

猜你喜欢

转载自blog.csdn.net/qq_46724903/article/details/105990859
今日推荐