数据结构 (矩阵的乘积算法)

n阶矩阵相乘

# include<stdio.h>
int main()
{
    
    
	int n,i,j,k;
	scanf("%d",&n);
	int a[n][n],b[n][n],c[n][n];
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=n;j++)
		{
    
    
			scanf("%d",&a[i][j]);
		}
	}
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=n;j++)
		{
    
    
			scanf("%d",&b[i][j]);
		}
	}	
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=n;j++)
		{
    
    
			c[i][j]=0;
			for(k=1;k<=n;k++)
			{
    
    
				c[i][j]=c[i][j]+a[i][k]*b[k][j];
			}
		}
	}
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=n;j++)
		{
    
    
			printf("%d ",c[i][j]);
		}
		printf("\n");
	}
	return 0;
 } 

在这里插入图片描述

矩阵nm乘以矩阵ms

# include<stdio.h>
int main()
{
    
    
	int n,i,j,k,m1,m2,s;
	printf("由矩阵乘法知识知,矩阵若要相乘必须使m1=m2\n请输入能使m1和m2相等的数\n");
	scanf("%d%d%d%d",&n,&m1,&m2,&s);
	int a[n][m1],b[m2][s],c[n][s];
	if(m1==m2)
	{
    
    
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=m1;j++)
		{
    
    
			scanf("%d",&a[i][j]);
		}
	}
	for(i=1;i<=m2;i++)
	{
    
    
		for(j=1;j<=s;j++)
		{
    
    
			scanf("%d",&b[i][j]);
		}
	}	
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=s;j++)
		{
    
    
			c[i][j]=0;
			for(k=1;k<=m1;k++)
			{
    
    
				c[i][j]=c[i][j]+a[i][k]*b[k][j];
			}
		}
	}
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=s;j++)
		{
    
    
			printf("%d ",c[i][j]);
		}
		printf("\n");
	}		
	}
	else
		printf("输入不符合要求\n");  
	return 0;
 } 

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45858803/article/details/109960562