#include<stdio.h>
int main()
{
int m,l,n;
int i,j,k;
void matrix(double *a,double *b,int m,int l,int n,double *c);
double a[m][l],b[l][n];
printf("请输入第一个矩阵的行数和列数\n");
scanf("%d%d",&m,&l);
printf("请继续输入第一个矩阵\n");
for(i=0;i<m;i++){
for(j=0;j<l;j++)
scanf("%lf",a[i]+j);}
printf("第一个矩阵为:\n");
for(i=0;i<m;i++){
for(j=0;j<l;j++){
printf("%10.2lf",*(a[i]+j));
}
printf("\n");
}
printf("请输入第二个矩阵的列数\n");
scanf("%d",&n);
printf("请继续输入第二个矩阵\n");
for(i=0;i<l;i++){
for(j=0;j<n;j++)
scanf("%lf",a[i]+j);}
printf("第二个矩阵为:\n");
for(i=0;i<l;i++){
for(j=0;j<n;j++){
printf("%10.2lf",*(b[i]+j));
}
printf("\n");
}
printf("第一个矩阵为:\n");
for(i=0;i<m;i++){
for(j=0;j<l;j++){
printf("%10.2lf",*(a[i]+j));
}
printf("\n");
}
printf("第二个矩阵为:\n");
for(i=0;i<l;i++){
for(j=0;j<n;j++){
printf("%10.2lf",*(b[i]+j));
}
printf("\n");
}
printf("矩阵乘法运算结果为:\n");
double c[m][n];
matrix(*a,*b,m,l,n,*c);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%10.2lf",*(c[i]+j));
}
printf("\n");
}
return 0;
}
void matrix(double *a,double *b,int m,int l,int n,double *c)
{
int i,j,k;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<l;k++)
{
*(c+i*n+j)=*(c+i*n+j)+*(a+i*l+k)*(*(b+k*n+j));
}
}
}
}