用C语言写一个两个矩阵相乘的函数

编写一个m*p阶与p*n阶阵想乘的函数,要求用指针做函数的形参,数组名做为实参,在主函数中任意输入两个m*p与p*m的矩阵,然后调用该函数做矩阵相乘运算,并打印出来
如何调用,实参是什么?

自己看看吧,可以同时都换成注释的行,有助于你理解参数传递
:)======================================================
#include<stdio.h>
#define M 5
#define P 4
#define N 3
void mltp(float (*a)[P],float (*b)[N],float (*c)[N])
//void mltp(float *a,float *b,float *c)
{
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
for(int k=0;k<P;k++)
c[i][j]+=a[i][k]*b[k][j];
//c[i*N+j]+=a[i*P+k]*b[k*N+j];
}

void main()
{
int i,j;
float a[M][P],b[P][N];
float c[M][N]={0};
printf("plz input a,b:\n");
for(i=0;i<M;i++)
for(j=0;j<P;j++)
scanf("%f",&a[i][j]);
for(i=0;i<P;i++)
for(j=0;j<N;j++)
scanf("%f",&b[i][j]);
mltp(a,b,c);
//mltp(&a[0][0],&b[0][0],&c[0][0]);//等
//mltp((float*)a,(float*)b,(float*)c);//价
printf("result is:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%f\t",c[i][j]);
printf("\n");
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-16
能量项链你会么?某年的noip上的题,矩阵乘法和它差不多
第2个回答  2019-10-29
matrix_mul(int
**A,
int
**B,
int
**C,
int
m,
int
p,
int
n)
{
for
(int
i
=
0;
i
<
m;
i++)
{
for
(int
j
=
0;
j
<
p;
j++)
{
C[i][j]
=
0;
for
(int
k
=
0;
k
<
n;
k++)
{
C[i][j]
+=
A[i][k]
*
B[k][j];
}
}
}
}
第3个回答  推荐于2018-02-28
matrix_mul(int **A, int **B, int **C, int m, int p, int n)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < p; j++)
{
C[i][j] = 0;
for (int k = 0; k < n; k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
}本回答被提问者和网友采纳

用c语言实现两个矩阵相乘怎么做?
C语言实现矩阵相乘问题描述:编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。分析:首先我们可以根据题意写出函数头。可以定为voidMatrixMutiply(intm,intn,intp,longlMatrix1[MAX][MAX],longlMatrix2[MAX][MAX],longlMatrixResult[MAX][MAX]),其中lMatrix1和lMatrix2...

用C语言求两矩阵相乘最好能在我写的上面改 谢谢了
scanf("%d,%d",&c,&d);printf("输入第二个矩阵为多少行多少列");scanf("%d,%d",&m,&n);if(d!=m)printf("两矩阵无法相乘");else {printf("输入第一个矩阵");for(i=0;i<c;i++)for(j=0;j<d;j++)scanf("%d",&a[i][j]);printf("输入第二个矩阵");for(i=0;i<m;i+...

C语言两个矩阵乘积
int main(){ int a[100][100],b[100][100],c[100][100]={0};int m1,n1,m2,n2,i,j,k;printf("请输入矩阵A行数m1 列数n1:\\n");scanf("%d%d",&m1,&n1);printf("请输入矩阵B行数m2 列数n2:\\n");scanf("%d%d",&m2,&n2);if(n1!=m2)printf("\\n不可以相乘\\n");else ...

C语言两个矩阵乘积
include <stdio.h>void matrix(int a[][3], int b[][2], int row, int col){ for (int i = 0; i < row; i++) for (int j = 0; j < col; j++) a[i][j] *= b[j][i];}void put(int x[][3], int row, int col){ for (int i = 0; i < ro...

求矩阵及逆矩阵乘法的c的函数! 谢谢了~~
矩阵乘法函数`trmul`的主要任务是将两个矩阵相乘,并将结果存储在第三个矩阵中。具体实现如下:函数接收四个参数:`a`、`b`、`m`、`n`和`k`。其中`a`和`b`为输入矩阵,`c`为输出矩阵,`m`、`n`和`k`分别为`a`、`b`和`c`的行数和列数。使用嵌套循环进行矩阵相乘。外部循环遍历输出...

C语言中两矩阵相乘
int main(){ int x,y,z;int i,j,l;int sum=0;printf("请输入前一个矩阵的行数,列数与后一个矩阵的列数:\\n");scanf("%d %d %d",&x,&y,&z);int a[x][y];int b[y][z];int c[x][z];\/\/读入矩阵 printf("请输入矩阵a:\\n");for(i=0;i<x;i++){ for(j=0;j<y...

怎么样编写两个矩阵相乘的c语言,要简洁的啊亲!,不要粘贴和复制的哦...
int main(){ int m1,n1,m2,n2;float a[100][100],b[100][100],c[100][100];while(1){ printf("请输入第一个矩阵的行和列数:\\n");scanf("%d%d",&m1,&n1);int i,j;for(i=0;i<m1;i++)for(j=0;j<n1;j++)scanf("%f",&a[i][j]);printf("请输入第二个矩阵的行和...

C语言:编写完整程序:计算两个矩阵的乘积。
\/\/矩阵的乘法Y=M*Q实现函数 void multsmatrix(ts M,ts Q,ts &Y){ int arow,brow=0,p,q,i1,tp,t1,ctemp[10],ccol;if(M.n!=Q.m)cout<<"错误!"<<endl;Y.m=M.m;Y.n=Q.n;Y.t=0;if(M.t*Q.t!=0){ for(arow=1;arow<=M.m;++arow){ for(i1=1;i1<=M.m;i...

c语言编一个计算矩阵相乘结果的程序
m,n是第二个矩阵的行数和列数double **A,**B,**C;A=(double**)malloc(sizeof(double*)*s);B=(double**)malloc(sizeof(double*)*m);C=(double**)malloc(sizeof(double*)*s);\/\/给三个二级指针分配下一级内存空间for(i=0;i...

C语言题,求两个矩阵的乘积
ELE* get(Metrix *M, int r, int c) { return M->A + IDX(M, r, c);} int main(){ int m, l, n, i, j, k;scanf("%d%d%d", &m, &l, &n);Metrix L, R;init(&L, m, l, 1);init(&R, l, n, 1);\/\/ init(M,m,n,0);\/\/矩阵乘法走起 for (i = 0; ...

相似回答