C语言编程:编写一个函数,实现矩阵的乘法。

如题所述

如果确定距阵的大小长度,定义两个二维数组,用两个for循环两数据输入到内存,是每两个for输入一个数组,然后定义另外一个数组,用来得到结果距阵,再用三个嵌套的for将结果放入第三个数组当中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循环,这样就可以得到要求的距阵,如果不确定大小长度就在输入语句的每个for循环的辖区内加一个变量作为标记程序运行时求出距阵的大小
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-09
#include
<stdio.h>
#include
"stdlib.h"
void
pr(int
**a,int
m,int
n)
{
int
i,j;
printf("\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
}
void
AB(int
**a,int
m1,int
n1,int
**b,int
m2,int
n2,int
**c)
{
int
i,j,k;
for(i=0;i<m1;i++)
for(j=0;j<n2;j++)
for(k=0;k<n1;k++)
c[i][j]+=a[i][k]*b[k][j];
}
void
main()
{
int
**a,**b,**c,m1,n1,m2,n2;
int
i,j;
printf("输入第一个矩阵的行数列数:");
scanf("%d%d",&m1,&n1);
printf("输入第二个矩阵的行数列数:");
scanf("%d%d",&m2,&n2);
if(n1!=m2)
{
printf("第一个矩阵的列必须等于第二个矩阵的行数!");
return;
}
//建立A矩阵
a=(int
**)calloc(m1,sizeof(int));
for(i=0;i<m1;i++)
a[i]=(int
*)calloc(n1,sizeof(int));
printf("A:输入%d个整数:",m1*n1);
for(i=0;i<m1;i++)
for(j=0;j<n1;j++)
scanf("%d",&a[i][j]);
//建立B矩阵
b=(int
**)calloc(m2,sizeof(int));
for(i=0;i<m2;i++)
b[i]=(int
*)calloc(n2,sizeof(int));
printf("B:输入%d个整数:",m2*n2);
for(i=0;i<m2;i++)
for(j=0;j<n2;j++)
scanf("%d",&b[i][j]);
//建立C矩阵
c=(int
**)calloc(m1,sizeof(int));
for(i=0;i<m1;i++)
c[i]=(int
*)calloc(n2,sizeof(int));
AB(a,m1,n1,b,m2,n2,c);
printf("A:\n");
pr(a,m1,n1);
printf("B:\n");
pr(b,m2,n2);
printf("C=AB\n");
pr(c,m1,n2);
}本回答被提问者采纳