c語(yǔ)言?xún)蓚€(gè)方陣相乘的函數(shù) c++實(shí)現(xiàn)兩個(gè)矩陣相乘

c語(yǔ)言矩陣乘法函數(shù)

函數(shù)類(lèi)型是根據(jù)有無(wú)返回值判斷的,無(wú)返回值就把函數(shù)定義為void類(lèi)型

成都創(chuàng)新互聯(lián)公司服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過(guò)10多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專(zhuān)業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶(hù)要求對(duì)網(wǎng)站進(jìn)行成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶(hù)網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶(hù)企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

如果是單純輸出矩陣那就不用返回了,如果還要傳回主函數(shù)有其它應(yīng)用那就返回吧

求高手幫忙用c語(yǔ)言求出兩個(gè)矩陣的乘積

1、首先打開(kāi)編程軟件,新建一個(gè)項(xiàng)目,添加一個(gè)double.cpp文件,如圖所示。

2、包含stdio.h頭文件,如圖所示。

3、接著輸入main函數(shù),如圖所示。

4、然后定義兩個(gè)double類(lèi)型變量并初始化,如圖所示。

5、使用scanf函數(shù)接受任意兩個(gè)小數(shù),計(jì)算兩個(gè)小數(shù)的乘積并打印出來(lái),如圖所示。

6、然后運(yùn)行程序,查看結(jié)果,如圖所示。

用c語(yǔ)言實(shí)現(xiàn)兩個(gè)矩陣相乘怎么做?

C語(yǔ)言實(shí)現(xiàn)矩陣相乘

問(wèn)題描述:

編寫(xiě)程序,可以實(shí)現(xiàn)m*n矩陣和n*p矩陣相乘。m,n,p均小于10,矩陣元素為整數(shù)。

分析:

首先我們可以根據(jù)題意寫(xiě)出函數(shù)頭。可以定為void

MatrixMutiply(int

m,int

n,int

p,long

lMatrix1[MAX][MAX],long

lMatrix2[MAX][MAX],long

lMatrixResult[MAX][MAX]),其中l(wèi)Matrix1和lMatrix2分別是輸入的m*n矩陣和n*p矩陣,lMatrixResult是輸出的m*p矩陣。

因?yàn)閙,n和p都是未知量,要進(jìn)行處理的矩陣大小是變量。但我們可以定義比較大的二維數(shù)組,只使用其中的部分?jǐn)?shù)組元素。

矩陣相乘的算法比較簡(jiǎn)單,輸入一個(gè)m*n矩陣和一個(gè)n*p矩陣,結(jié)果必然是m*p矩陣,有m*p個(gè)元素,每個(gè)元素都需要計(jì)算,可以使用m*p嵌套循環(huán)進(jìn)行計(jì)算。

根據(jù)矩陣乘法公式:

可以用循環(huán)直接套用上面的公式計(jì)算每個(gè)元素。嵌套循環(huán)內(nèi)部進(jìn)行累加前,一定要注意對(duì)累加變量進(jìn)行清零。

數(shù)據(jù)要求

問(wèn)題中的常量:

#define

MAX

10?

/*矩陣最大行數(shù)和列數(shù)*/

問(wèn)題的輸入:

int

m,n,p;??

/*相乘的兩個(gè)矩陣的行列數(shù)*/

long

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

/*相乘的兩個(gè)矩陣*/

問(wèn)題的輸出:

long

lMatrixResult[MAX][MAX];???

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

初始算法

1.輸入兩個(gè)矩陣的的行列數(shù)m,n,p;

2.輸入第一個(gè)矩陣的每個(gè)元素;

3.輸入第二個(gè)矩陣的每個(gè)元素;

4.調(diào)用函數(shù)進(jìn)行乘法運(yùn)算,結(jié)果放在lMatrixResult

中;

5.

打印輸出結(jié)果矩陣。

算法細(xì)化

算法的步驟4計(jì)算兩個(gè)矩陣的乘法算法如下:

4.1

定義循環(huán)變量i,j,k;

4.2

嵌套循環(huán)計(jì)算結(jié)果矩陣(m*p)的每個(gè)元素。

程序代碼如下:

#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;

/*嵌套循環(huán)計(jì)算結(jié)果矩陣(m*p)的每個(gè)元素*/

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

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

{

/*按照矩陣乘法的規(guī)則計(jì)算結(jié)果矩陣的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;

/*輸入兩個(gè)矩陣的的行列數(shù)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);

/*輸入第一個(gè)矩陣的每個(gè)元素*/

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;

}

/*輸入第二個(gè)矩陣的每個(gè)元素*/

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;

}

/*調(diào)用函數(shù)進(jìn)行乘法運(yùn)算,結(jié)果放在lMatrixResult

中*/

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

/*打印輸出結(jié)果矩陣*/

printf("\nResult

matrix:

\n");

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

{

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

printf("%ld

",lMatrixResult[i][j]);

printf("\n");

}

}

程序運(yùn)行結(jié)果如下:

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語(yǔ)言,用函數(shù)調(diào)用的方式求兩個(gè)矩陣相乘。

#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語(yǔ)言關(guān)于矩陣乘法的函數(shù),,

童鞋,不知道你是用的什么測(cè)試數(shù)據(jù),在我的機(jī)器上測(cè)試了幾組數(shù)據(jù),結(jié)果都是正確的。

重復(fù)下我的測(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("請(qǐng)輸入a矩陣行數(shù)和列數(shù),以空格分開(kāi),,,");

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

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

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

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

{

printf("請(qǐng)輸入a矩陣%d行%d列的數(shù),,",(i+1),(j+1));

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

}

printf("請(qǐng)輸入b矩陣行數(shù)和列數(shù),以空格分開(kāi),,,");

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

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

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

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

{

printf("請(qǐng)輸入b矩陣%d行%d列的數(shù),,",(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");

}

}

附帶一組測(cè)試數(shù)據(jù)

A 3 4

2 1

B 3

4

Result

25

10

結(jié)果正確。

C語(yǔ)言實(shí)現(xiàn)矩陣乘法

1,若程序定義為三行三列的矩陣,并在主函數(shù)中鍵盤(pán)賦值。請(qǐng)編寫(xiě)函數(shù)juzhen(int a[][3],int n),函數(shù)功能是:使矩陣左下角元素中的值乘以.例如:若矩陣中的值為:

1 9 7

2 3 8

4 5 6

n=3,則矩陣值變?yōu)椋?/p>

1 9 7

6 9 8

12 15 18

注:二維數(shù)組下三角元素每行最后元素的列標(biāo)和該列的列號(hào)一致

#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,請(qǐng)編寫(xiě)函數(shù)juzhen,該函數(shù)的功能是:將三行四列矩陣x乘以四行三列矩陣y,結(jié)果放在三行三列矩陣中。矩陣相乘的基本方法是:矩陣Xy中行列下標(biāo)分別為i,j的元素的值,是矩陣X中第i行上四個(gè)元素與矩陣Y中第j列上四個(gè)元素對(duì)應(yīng)相乘的積。

X和Y矩陣原型可運(yùn)行后看到!

#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];/*此得為要填寫(xiě)的內(nèi)容*/

}

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");

}

}

由于你沒(méi)有說(shuō)要求,我就寫(xiě)了兩個(gè),這是兩道比較精典的求c語(yǔ)言矩陣乘法程序

網(wǎng)頁(yè)題目:c語(yǔ)言?xún)蓚€(gè)方陣相乘的函數(shù) c++實(shí)現(xiàn)兩個(gè)矩陣相乘
本文路徑:http://muchs.cn/article4/hheiie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化企業(yè)建站、全網(wǎng)營(yíng)銷(xiāo)推廣做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)