c语言两个方阵相乘的函数 c++实现两个矩阵相乘

c语言矩阵乘法函数

函数类型是根据有无返回值判断的,无返回值就把函数定义为void类型

成都创新互联公司服务紧随时代发展步伐,进行技术革新和技术进步,经过10多年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行成都网站设计、网站建设、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

如果是单纯输出矩阵那就不用返回了,如果还要传回主函数有其它应用那就返回吧

求高手帮忙用c语言求出两个矩阵的乘积

1、首先打开编程软件,新建一个项目,添加一个double.cpp文件,如图所示。

2、包含stdio.h头文件,如图所示。

3、接着输入main函数,如图所示。

4、然后定义两个double类型变量并初始化,如图所示。

5、使用scanf函数接受任意两个小数,计算两个小数的乘积并打印出来,如图所示。

6、然后运行程序,查看结果,如图所示。

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

C语言实现矩阵相乘

问题描述:

编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。

分析:

首先我们可以根据题意写出函数头。可以定为void

MatrixMutiply(int

m,int

n,int

p,long

lMatrix1[MAX][MAX],long

lMatrix2[MAX][MAX],long

lMatrixResult[MAX][MAX]),其中lMatrix1和lMatrix2分别是输入的m*n矩阵和n*p矩阵,lMatrixResult是输出的m*p矩阵。

因为m,n和p都是未知量,要进行处理的矩阵大小是变量。但我们可以定义比较大的二维数组,只使用其中的部分数组元素。

矩阵相乘的算法比较简单,输入一个m*n矩阵和一个n*p矩阵,结果必然是m*p矩阵,有m*p个元素,每个元素都需要计算,可以使用m*p嵌套循环进行计算。

根据矩阵乘法公式:

可以用循环直接套用上面的公式计算每个元素。嵌套循环内部进行累加前,一定要注意对累加变量进行清零。

数据要求

问题中的常量:

#define

MAX

10 

/*矩阵最大行数和列数*/

问题的输入:

int

m,n,p;  

/*相乘的两个矩阵的行列数*/

long

lMatrix1[MAX][MAX],lMatrix2[MAX][MAX];

/*相乘的两个矩阵*/

问题的输出:

long

lMatrixResult[MAX][MAX];   

/*矩阵相乘后得到的矩阵*/

初始算法

1.输入两个矩阵的的行列数m,n,p;

2.输入第一个矩阵的每个元素;

3.输入第二个矩阵的每个元素;

4.调用函数进行乘法运算,结果放在lMatrixResult

中;

5.

打印输出结果矩阵。

算法细化

算法的步骤4计算两个矩阵的乘法算法如下:

4.1

定义循环变量i,j,k;

4.2

嵌套循环计算结果矩阵(m*p)的每个元素。

程序代码如下:

#define

MAX

10

void

MatrixMutiply(int

m,int

n,int

p,long

lMatrix1[MAX][MAX],

long

lMatrix2[MAX][MAX],long

lMatrixResult[MAX][MAX])

{

int

i,j,k;

long

lSum;

/*嵌套循环计算结果矩阵(m*p)的每个元素*/

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

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

{

/*按照矩阵乘法的规则计算结果矩阵的i*j元素*/

lSum=0;

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

lSum+=lMatrix1[i][k]*lMatrix2[k][j];

lMatrixResult[i][j]=lSum;

}

}

main()

{

long

lMatrix1[MAX][MAX],lMatrix2[MAX][MAX];

long

lMatrixResult[MAX][MAX],lTemp;

int

i,j,m,n,p;

/*输入两个矩阵的的行列数m,n,p*/

printf("\nPlease

input

m

of

Matrix1:\n");

scanf("%d",m);

printf("Please

input

n

of

Matrix1:\n");

scanf("%d",n);

printf("Please

input

p

of

Matrix2:\n");

scanf("%d",p);

/*输入第一个矩阵的每个元素*/

printf("\nPlease

elements

of

Matrix1(%d*%d):\n",m,n);

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

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

{

scanf("%ld",lTemp);

lMatrix1[i][j]=lTemp;

}

/*输入第二个矩阵的每个元素*/

printf("\nPlease

elements

of

Matrix2(%d*%d):\n",n,p);

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

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

{

scanf("%ld",lTemp);

lMatrix2[i][j]=lTemp;

}

/*调用函数进行乘法运算,结果放在lMatrixResult

中*/

MatrixMutiply(m,n,p,lMatrix1,lMatrix2,lMatrixResult);

/*打印输出结果矩阵*/

printf("\nResult

matrix:

\n");

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

{

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

printf("%ld

",lMatrixResult[i][j]);

printf("\n");

}

}

程序运行结果如下:

Please

input

m

of

Matrix1:

3

Please

input

n

of

Matrix1:

2

Please

input

p

of

Matrix2:

3

Please

elements

of

Matrix1(3*2):

1

2

1

3

Please

elements

of

Matrix2(2*3):

1

2

3

1

1

Result

matrix:

7

4

2

3

1

1

3

6

c语言,用函数调用的方式求两个矩阵相乘。

#include bits/stdc++.h

using namespace std;

int a[233][233],b[233][233],c[233][233];

/*上述代码*/

int main(){

scanf("%d",n);

for (int i=1;i=n;i++) for (int j=1;j=n;j++) scanf("%d",a[i][j]);

for (int i=1;i=n;i++) for (int j=1;j=n;j++) scanf("%d",b[i][j]);  

mult(a,b,c);

}

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语言实现矩阵乘法

1,若程序定义为三行三列的矩阵,并在主函数中键盘赋值。请编写函数juzhen(int a[][3],int n),函数功能是:使矩阵左下角元素中的值乘以.例如:若矩阵中的值为:

1 9 7

2 3 8

4 5 6

n=3,则矩阵值变为:

1 9 7

6 9 8

12 15 18

注:二维数组下三角元素每行最后元素的列标和该列的列号一致

#include stdio.h

int juzhen(int a[][3],int n)

{

int i,j;

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

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

a[i][j]=a[i][j]*n;

}

main()

{

int i,j,a[3][3],m;

clrscr();

printf("please enter 9 numbers :\n");

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

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

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

printf("the old ju zhen is:\n");

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

{

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

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

printf("\n");

}

printf("please enter a int number:\n");

scanf("%d",m);

juzhen (a,m);

printf("the new ju zhen is:\n");

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

{

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

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

printf("\n");

}

}

2,请编写函数juzhen,该函数的功能是:将三行四列矩阵x乘以四行三列矩阵y,结果放在三行三列矩阵中。矩阵相乘的基本方法是:矩阵Xy中行列下标分别为i,j的元素的值,是矩阵X中第i行上四个元素与矩阵Y中第j列上四个元素对应相乘的积。

X和Y矩阵原型可运行后看到!

#include conio.h

#include stdio.h

void juzhen (int a[3][4],int b[4][3],int ab[3][3])

{

int i,j,z;

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

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

for (z=0;z3;z++)

ab[i][z]=ab[i][z]+a[i][j]*b[j][z];/*此得为要填写的内容*/

}

main()

{

int x[3][4]={1,0,1,1,2,1,0,1,1,2,0,3};

int y[4][3]={1,1,1,0,0,0,2,1,1,1,1,3};

int xy[3][3]={0},i,j;

clrscr();

juzhen (x,y,xy);

printf("x ju zhen is:\n");

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

{

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

printf("%3d",x[i][j]);

printf("\n");

}

printf("y ju zhen is:\n");

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

{

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

printf("%3d",y[i][j]);

printf("\n");

}

printf("xy ju zhen is:\n");

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

{

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

printf("%3d",xy[i][j]);

printf("\n");

}

}

由于你没有说要求,我就写了两个,这是两道比较精典的求c语言矩阵乘法程序


当前题目:c语言两个方阵相乘的函数 c++实现两个矩阵相乘
当前网址:http://azwzsj.com/article/hheiie.html