用C语言求任意两个矩阵的乘积的子程序

输入矩阵的行数、列数和元素值,可以求得两矩阵乘积。... 输入矩阵的行数、列数和元素值,可以求得两矩阵乘积。 展开
 我来答
匿名用户
推荐于2017-11-25
展开全部
#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);}
琦妮关庆
2019-06-17 · TA获得超过3590个赞
知道大有可为答主
回答量:3095
采纳率:34%
帮助的人:189万
展开全部
#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);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式