用C语言求任意两个矩阵的乘积的子程序
输入矩阵的行数、列数和元素值,可以求得两矩阵乘积。
输入矩阵的行数、列数和元素值,可以求得两矩阵乘积。
答案:#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);}