网站建设资讯

NEWS

网站建设资讯

自定义函数c语言矩阵相乘 c语言矩阵乘法函数

c语言求2矩阵相乘函数,可以自定义矩阵的阶次

#includestdio.h

成都创新互联公司主营从化网站建设的网络公司,主营网站建设方案,成都APP应用开发,从化h5小程序定制开发搭建,从化网站营销推广欢迎从化等地区企业咨询

#define N 2

#define M 3

#define P 2

//a[N][M] * b[M][P] =c[N][P]

void matric(int x[][M],int y[][P],int z[][P])

{

int i,j,k;

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

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

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

z[i][j]+=x[i][k]*y[k][j];

}

void main()

{

int i,j;

int a[2][3]={{3,4,5},{2,2,4}};

int b[3][2]={{2,3},{5,6},{3,4}};

int c[2][2]={{0,0},{0,0}};

matric(a,b,c);

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

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

{

if(j%P==0) printf("\n");

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

}

printf("\n");

}

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语言编程:编写一个函数,实现矩阵的乘法。

如果确定距阵的大小长度,定义两个二维数组,用两个for循环两数据输入到内存,是每两个for输入一个数组,然后定义另外一个数组,用来得到结果距阵,再用三个嵌套的for将结果放入第三个数组当中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循环,这样就可以得到要求的距阵,如果不确定大小长度就在输入语句的每个for循环的辖区内加一个变量作为标记程序运行时求出距阵的大小

C语言编程求矩阵乘积

#define MAX 50

#define M MAX

#define N MAX

#define T MAX

#define S MAX

int Mult(double a[][N],int m,int n,double b[][T]int s,int t,double c[][T]) {

int i,j,k;

if(n != s) {

printf("两矩阵相乘,左矩阵的列数与右矩阵的行数必须相等。\n");

return 0;

}

int c;

tmp.m_Mat = new double *[tmp.m_Rows];

for(int i = 0;i  tmp.m_Rows;i++) tmp.m_Mat[i] = new double[tmp.m_Cols];

for(i = 0; i  m; ++i) {

for(j = 0; j  n; ++j) {

c[i][j] = 0;

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

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

}

}

return 1;

}

用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语言矩阵相乘 c语言矩阵乘法函数
文章链接:http://njwzjz.com/article/hicipj.html