c語言矩陣乘法和點乘,c語言矩陣乘法和點乘的區別

本文目錄一覽:

c語言的矩陣乘法問題 初學者求助

//矩陣乘法屬於線性代數;矩陣乘法的原理不難,只要原理搞請,代碼很好寫的

#includestdio.h

/*功能為計算給定的矩陣a(m行n列)和矩陣b(n行t列)的乘積矩陣c*/

void f(int a[3][4], int b[4][3], int c[3][3], int m, int n, int t) {

//矩陣乘法:前行乘後列

//矩陣a的行(m)作為矩陣c的行

//矩陣b的列(t)作為矩陣c的列

for (int i = 0; i m; i++) {//新矩陣m行

for (int j = 0; j t; j++) {//新矩陣t列

int sum=0;

for (int k = 0; k n; k++) {

sum += (a[i][k] * b[k][j]);//行列對應相乘,然後累加

}

c[i][j]=sum;

}

}

}

/* 請在這裡填寫答案 */

/*

1 2 3 4

2 3 4 5

3 4 5 6

1 2 3

2 3 4

3 4 5

4 5 6

*/

int main() {

int i, j, a[3][4], b[4][3], c[3][3];

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

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

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

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

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

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

f(a, b, c, 3, 4, 3);

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

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

printf(“%5d”, c[i][j]);

printf(“\n”);

}

}

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語言中兩矩陣相乘

#include stdio.h

int main()

{

int x,y,z;

int i,j,l;

int sum=0;

printf(“請輸入前一個矩陣的行數,列數與後一個矩陣的列數:\n”);

scanf(“%d %d %d”,x,y,z);

int a[x][y];

int b[y][z];

int c[x][z];

//讀入矩陣

printf(“請輸入矩陣a:\n”);

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

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

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

}

}

printf(“請輸入矩陣b:\n”);

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

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

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

}

}

printf(“矩陣a為:\n”);

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

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

printf(“%d”,a[i][j]);

if(j==y-1)

printf(“\n”);

else

printf(“\t”);

}

}

printf(“矩陣b為:\n”);

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

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

printf(“%d”,b[i][j]);

if(j==z-1)

printf(“\n”);

else

printf(“\t”);

}

}

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

for(l=0;lz;l++){

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

sum+=a[i][j]*b[j][l];

if(j==y-1){

c[i][l]=sum,sum=0;

}

}

}

}

printf(“矩陣a與矩陣b的乘積為:\n”);

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

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

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

if(j==z-1)

printf(“\n”);

else

printf(“\t”);

}

}

return 0;

}

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語言實現兩個矩陣相乘怎麼做?

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語言矩陣的乘法

#includestdio.h

typedef struct

{

int m;

int n;

int array[100][100];

}Ju_def;

int main()

{

Ju_def Ju[11];

int i=0,m,n,k;

int flag[10];

while(1)

{

flag[i]=0;

printf(“In put m and n:\n”);

scanf(“%d%d”,Ju[i].m,Ju[i].n);

while(Ju[i].m=0||Ju[i].m100||Ju[i].n=0||Ju[i].m100)

{

printf(“In put m and n again:\n”);

scanf(“%d%d”,Ju[i].m,Ju[i].n);

}

printf(“In put your array:\n”);

for(m=0;mJu[i].m;m++)

{

for(n=0;nJu[i].n;n++)

{

scanf(“%d”,Ju[i].array[m][n]);

if(Ju[i].array[m][n]==0)

flag[i]++;

}

}

if(flag[i]==(Ju[i].m*Ju[i].n))//矩陣元素全為0才退出循環

{

flag[i]=1;

break;

}

else

flag[i]=0;

i++;

i=i%10;//超過10個矩陣,則又循環到第1個。

}

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

{

if((Ju[i].m!=Ju[0].n)(flag[i]==0))

{

printf(“Not satisfied the definition of matrix multiplication !\n”);

return 0;

}

if(flag[i])

{

break;

}

for(m=0;mJu[0].m;m++)

{

for(n=0;nJu[0].n;n++)

{

Ju[10].array[m][n]=0;

for(k=0;kJu[i].m;k++)

{

Ju[10].array[m][n]+=Ju[0].array[m][n]*Ju[i].array[k][n];

}

Ju[0].array[m][n]=Ju[10].array[m][n];

}

}

}

for(m=0;mJu[0].m;m++)

{

for(n=0;nJu[0].n;n++)

{

printf(“%-8d”,Ju[0].array[m][n]);

}

printf(“\n”);

}

}

你試試這個我的矩陣乘法是這樣的了,A=A*B*C…(10個以內)。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194439.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 14:38
下一篇 2024-12-02 14:38

相關推薦

  • Python中new和init的區別

    new和init都是Python中常用的魔法方法,它們分別負責對象的創建和初始化,本文將從多個角度詳細闡述它們的區別。 一、創建對象 new方法是用來創建一個對象的,它是一個類級別…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Sublime Test與Python的區別

    Sublime Text是一款流行的文本編輯器,而Python是一種廣泛使用的編程語言。雖然Sublime Text可以用於編寫Python代碼,但它們之間有很多不同之處。接下來從…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字元命令行的語言…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29

發表回復

登錄後才能評論