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

Python011

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

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矩阵。

#include <stdio.h>

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=0i<xi++){

for(j=0j<yj++){

scanf("%d",&a[i][j])

}

}

printf("请输入矩阵b:\n")

for(i=0i<yi++){

for(j=0j<zj++){

scanf("%d",&b[i][j])

}

}

printf("矩阵a为:\n")

for(i=0i<xi++){

for(j=0j<yj++){

printf("%d",a[i][j])

if(j==y-1)

printf("\n")

else

printf("\t")

}

}

printf("矩阵b为:\n")

for(i=0i<yi++){

for(j=0j<zj++){

printf("%d",b[i][j])

if(j==z-1)

printf("\n")

else

printf("\t")

}

}

for(i=0i<xi++){

for(l=0l<zl++){

for(j=0j<yj++){

sum+=a[i][j]*b[j][l]

if(j==y-1){

c[i][l]=sum,sum=0

}

}

}

}

printf("矩阵a与矩阵b的乘积为:\n")

for(i=0i<xi++){

for(j=0j<zj++){

printf("%d",c[i][j])

if(j==z-1)

printf("\n")

else

printf("\t")

}

}

return 0

}

#include<stdio.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].m>100||Ju[i].n<=0||Ju[i].m>100)

{

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=0m<Ju[i].mm++)

{

for(n=0n<Ju[i].nn++)

{

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=1i<10i++)

{

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=0m<Ju[0].mm++)

{

for(n=0n<Ju[0].nn++)

{

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

for(k=0k<Ju[i].mk++)

{

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=0m<Ju[0].mm++)

{

for(n=0n<Ju[0].nn++)

{

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

}

printf("\n")

}

}

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