矩阵的乘法

#include<stdio.h>
#include<stdlib.h>
void Print(int **a,int m,int n)
{
	int i,j;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}
}
int**MatrixMultiply(int **a,int **b,int **c,int x,int m,int n)
{
	int i,j,k;
	for(i=0;i<x;i++)
		for(j=0;j<n;j++)
			c[i][j]=0;
	for(i=0;i<x;i++)
		for(j=0;j<n;j++)
			for(k=0;k<m;k++)
				c[i][j]+=a[i][k]*b[k][j];
	return c;
}
int main()
{
	int **a,**b,**c;
	int x,y,m,n,i,j;
	printf("请输入第一个矩阵的行和列:");
	scanf("%d %d",&x,&y);
	printf("请输入第二个矩阵的行和列:");
	scanf("%d %d",&m,&n);
	while(y!=m)
	{
		printf("第一个的列和第二个的行不相等,请重新输入:");
		scanf("%d %d",&m,&n);
		if(y==m)
			break;
	}
	a=(int**)malloc(sizeof(int*)*x);
	b=(int**)malloc(sizeof(int*)*m);
	c=(int**)malloc(sizeof(int*)*x);
	for(i=0;i<x;i++)
		a[i]=(int*)malloc(sizeof(int)*y);
	for(i=0;i<m;i++)
		b[i]=(int*)malloc(sizeof(int)*n);
	for(i=0;i<x;i++)
		c[i]=(int*)malloc(sizeof(int)*n);
	printf("请输入第一个矩阵\n");
	while(scanf("%d",&a[0][0])!=EOF)
	{
		for(i=1;i<y;i++)
			scanf("%d",&a[0][i]);
		for(i=1;i<x;i++)
			for(j=0;j<y;j++)
				scanf("%d",&a[i][j]);
		printf("请输入第二个矩阵\n");
		for(i=0;i<m;i++)
			for(j=0;j<n;j++)
				scanf("%d",&b[i][j]);
		printf("相乘之后的结果为:\n");
		Print(MatrixMultiply(a,b,c,x,m,n),x,n);
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值