矩阵叉乘c语言子函数,矩阵的叉乘运算法则

用c语言编写一个函数实现矩阵的叉乘

#includestdio.h

创新互联作为成都网站建设公司,专注成都网站建设、网站设计,有关企业网站建设方案、改版、费用等问题,行业涉及塑料袋等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

void matrix(int a[][100],int a1,int a2,int b[][100],int b1,int b2,int c[][100])

{

int i,j,k;

if(a2!=b1)

{

printf("矩阵的维数错了!\n");

return;

}

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

{

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

{

c[i][j]=0;

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

c[i][j]+=a[i][k]*b[k][j];

}

}

}

int main()

{

int a1,a2,b1,b2,a[100][100],b[100][100],c[100][100],i,j;

printf("输入矩阵一的行数和列数(不超过100):\n");

scanf("%d%d",a1,a2);

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

{

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

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

}

printf("输入矩阵一的行数和列数(不超过100):\n");

scanf("%d%d",b1,b2);

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

{

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

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

}

matrix(a,a1,a2,b,b1,b2,c);

printf("结果:\n");

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

{

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

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

printf("\n");

}

return 0;

}

c语言 矩阵相乘

#include fstream

#include IOMANIP

#include stdio.h

using namespace std;

void input_data(float b[][50])

{

int r,l;

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

{

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

{

printf("\n第%d个元素为:",i*3+j+1);//去掉b[i][j]

scanf("%f",b[i][j]);

}

}

printf("输入完毕!\n");

}

void output_data(float b[][50])

{

int r,l;

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

{

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

{

printf("%f ",b[i][j]);

}

printf("\n");

}

}

void multiply(float M[50][50],float N[50][50],float J[50][50])

{

float sum;

int l=3;

int l1=3;//都是三乘三的吧,方阵

int k=3;//K赋初值

for(int i=0;ik;i++)

{

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

{

sum=0;//赋初值

for(int j=0;jl1;j++)

{

sum+=M[i][j]*N[j][k];

}

J[i][k]=sum;

sum=0;

}

}

}

void main()

{

float A[50][50];

float B[50][50];

float C[50][50]={0};//赋初值

input_data(A);

output_data(A);

multiply(A,A,C);

output_data(C);

}//1 2 3 4 5 6 7 8 9

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

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语言写一个两个矩阵相乘的函数

自己看看吧,可以同时都换成注释的行,有助于你理解参数传递

:)======================================================

#includestdio.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;iM;i++)

for(int j=0;jN;j++)

for(int k=0;kP;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;iM;i++)

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

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

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

for(j=0;jN;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;iM;i++)

{

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

printf("%f\t",c[i][j]);

printf("\n");

}

}

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语言子函数,矩阵的叉乘运算法则
本文链接:http://ybzwz.com/article/hdeiji.html