c语言矩阵相乘函数 矩阵相乘算法c语言

用c语言实现两个矩阵相乘怎么做?

1、程序运行输入数据时,第一行为A矩阵的行列数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。

成都创新互联公司专业为企业提供内江网站建设、内江做网站、内江网站设计、内江网站制作等企业网站建设、网页设计与制作、内江企业网站模板建站服务,十载内江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

2、首先,定义6个整型变量,保存A、B矩阵的行和列,以及控制循环的变量,k则用于实现矩阵的乘法。

3、接着,定义三个整型二维数组,保存A、B和C矩阵的各元素。

4、输入三个矩阵的行数和列数,保存在变量a、b、c中。

5、输入矩阵A的各元素,保存在数组X中。

6、输入矩阵B的各元素,保存在数组Y中。

7、将二维数组Z的各元素,初始化为0。

8、用两层for循环,控制矩阵的乘法,并输出乘法所得的结果。

9、计算A矩阵和B矩阵的乘法,结果保存在数组Z中。

10、最后,输出乘法所得的结果,即输出Z数组中的所有元素。

11、运行程序,输入矩阵A和B的行数和列数,以及A矩阵和B矩阵的所有元素,电脑就会计算出乘积C矩阵的所有元素,并输出C矩阵。

c语言矩阵的乘法

#includestdio.h

typedef struct

{

int m;

int n;

int array[100][100];

}Ju_def;

int main()

{

Ju_def Ju[11];

int i=0,m,n,k;

int flag[10];

while(1)

{

flag[i]=0;

printf("In put m and n:\n");

scanf("%d%d",Ju[i].m,Ju[i].n);

while(Ju[i].m=0||Ju[i].m100||Ju[i].n=0||Ju[i].m100)

{

printf("In put m and n again:\n");

scanf("%d%d",Ju[i].m,Ju[i].n);

}

printf("In put your array:\n");

for(m=0;mJu[i].m;m++)

{

for(n=0;nJu[i].n;n++)

{

scanf("%d",Ju[i].array[m][n]);

if(Ju[i].array[m][n]==0)

flag[i]++;

}

}

if(flag[i]==(Ju[i].m*Ju[i].n))//矩阵元素全为0才退出循环

{

flag[i]=1;

break;

}

else

flag[i]=0;

i++;

i=i%10;//超过10个矩阵,则又循环到第1个。

}

for(i=1;i10;i++)

{

if((Ju[i].m!=Ju[0].n)(flag[i]==0))

{

printf("Not satisfied the definition of matrix multiplication !\n");

return 0;

}

if(flag[i])

{

break;

}

for(m=0;mJu[0].m;m++)

{

for(n=0;nJu[0].n;n++)

{

Ju[10].array[m][n]=0;

for(k=0;kJu[i].m;k++)

{

Ju[10].array[m][n]+=Ju[0].array[m][n]*Ju[i].array[k][n];

}

Ju[0].array[m][n]=Ju[10].array[m][n];

}

}

}

for(m=0;mJu[0].m;m++)

{

for(n=0;nJu[0].n;n++)

{

printf("%-8d",Ju[0].array[m][n]);

}

printf("\n");

}

}

你试试这个我的矩阵乘法是这样的了,A=A*B*C...(10个以内)。

C语言关于矩阵乘法的函数,,

童鞋,不知道你是用的什么测试数据,在我的机器上测试了几组数据,结果都是正确的。

重复下我的测试代码。

#include "stdio.h"

#include "stdlib.h"

#include "malloc.h"

void multiplication(int a,int b,int c,int *p,int *q);

void main()

{

int m,n,l,h;

int i,j,g,k;

int *p,*q;

char x;

printf("请输入a矩阵行数和列数,以空格分开,,,");

scanf("%d %d",m,n);

p=(int *)malloc(sizeof(int)*m*n);

for(i=0;im;i++)

for(j=0;jn;j++)

{

printf("请输入a矩阵%d行%d列的数,,",(i+1),(j+1));

scanf("%d",(p+m*i+j));

}

printf("请输入b矩阵行数和列数,以空格分开,,,");

scanf("%d %d",l,h);

q=(int *)malloc(sizeof(int)*l*h);

for(g=0;gl;g++)

for(k=0;kh;k++)

{

printf("请输入b矩阵%d行%d列的数,,",(g+1),(k+1));

scanf("%d",(q+l*g+k));

}

multiplication( m, n, h, p, q);

}

void multiplication(int a,int b,int c,int *p,int *q)

{

int i,j;

int k;

int sum;

for(i=0;ia;i++)

{

for(j=0;jc;j++)

{

sum=0;

for(k=0;kb;k++)

{

sum=sum+(*(p+a*i+k))*(*(q+b*k+j));

}

printf("%d ",sum);

}

printf("\n");

}

}

附带一组测试数据

A 3 4

2 1

B 3

4

Result

25

10

结果正确。


网站标题:c语言矩阵相乘函数 矩阵相乘算法c语言
本文来源:http://ybzwz.com/article/hhdpid.html