求c語言編矩陣乘法運算的程式,求一個C語言編矩陣乘法運算的程式

2021-05-23 19:55:06 字數 3307 閱讀 9122

1樓:手機使用者

#include "iostream.h"

void matrixchain(int *p,int n,int **m,int **s)

// int p=;

// int m[6][6],s[6][6];

int **m,**s;

m=new int*[n];

for( i=1;i<=n;i++)

m[i]=new int[n];

s=new int*[n];

for( i=1;i<=n;i++)

s[i]=new int[n];

matrixchain(p,n,m,s);

traceback(1,n,s);

}這是矩陣連乘

用c語言實現兩個矩陣相乘怎麼做?

2樓:灩麗

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

3樓:匿名使用者

#include

#include

#define m 3

int main(void)

{int i,j,k,matrix1[m][m],matrix2[m][m],row1=m ,col1=m ,row2=m,col2=m,matrix[m][m];

/*為需要相乘的兩個矩陣賦值:*/

printf("輸入第一個矩陣:\n");

for(i=0;i

4樓:育知同創教育

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])

}main()

/*輸入第二個矩陣的每個元素*/

printf("\nplease elements of matrix2(%d*%d):\n",n,p);

for(i=0;i

for(j=0;j

/*呼叫函式進行乘法運算,結果放在lmatrixresult 中*/

matrixmutiply(m,n,p,lmatrix1,lmatrix2,lmatrixresult);

/*列印輸出結果矩陣*/

printf("\nresult matrix: \n");

for(i=0;i

}程式執行結果如下:

please input m of matrix1:

**lease input n of matrix1:

2please input p of matrix2:

**lease elements of matrix1(3*2):

1 20 1

3 0please elements of matrix2(2*3):

1 2 0

3 1 1

result matrix:

7 4 2

3 1 1

3 6 0

5樓:匿名使用者

有c語言實現兩個句子呢相同的話我覺得這個在程式設計的時候只要把兩個句子兩個句子然後涉及到一個什麼可以了

6樓:匿名使用者

用c語言實現兩個矩陣相乘,編寫程式就行。

7樓:xc望心闖天下

#include

int main()

}for(i = 0;i < 3 ; i++)}for(i = 0; i < 3; i++)}for(i = 0;i < 3 ; i++)printf("\n");}}請採納

求用C語言編寫求絕對值的程式,求用C語言編寫一個求絕對值的程式

include define max 100 void main if ch 0 num ch 0 48 i 1 while ch i 0 ch i 9 if ch i else 不是不是,我只是不知道你要小數,要小數就更好辦了,要求只要小數嗎?include stdio.h main 用c語言編寫...

跪求c語言實現矩陣運算加減乘求逆

include include void jiafa printf 第一步變換後得到的增廣矩陣為 n for i 0 i0 printf 最後得到的增廣矩陣為 n for i 0 i for i 0 i for j 0 j c i j b i n j printf 故逆矩陣為 n for i 0 i...

求簡單c語言程式分析答案,求簡單C語言程式分析答案?

x y的時候把y的值2賦給x,同時三元運算子?中,如果問號前的表示式是正確的,就會得到冒號前的值,否則是冒號後的值,所以在此處選擇冒號前的值,也就是x自增後的值賦給k,因此k 3.注意x y是賦值語句,不是x y判斷相等語句。應該等於0吧!怎麼會等於三呢?就是判斷x是否等於y,結果x不等於y,k x...