簡體   English   中英

C語言矩陣乘法

[英]Matrix Multiplication in C language

我正在嘗試在C語言中乘以二維矩陣。 我在下面提供了代碼,供您參考。 當我嘗試打印'myC'時,我總是得到零。 我要去哪里錯了? 我已經嘗試了多種方法,但仍然無法解決。 有沒有人有想法,將不勝感激。

#include <stdio.h> 
#define mysize 4 

int myA[mysize][mysize];
int myC[mysize][mysize];
int i,k;
int j,l;
int total;
int iLimit;
int jLimit;

void printMatrix(int iLimit,int jLimit,int myA[iLimit][jLimit]){
    i=0;
    while (i<iLimit){
        j=0;
        while (j<jLimit){
            printf ("%7d", myA[i][j]);
            j=j+1;
        }
        printf ("\n");
        i=i+1;}
}

int main(void){
    iLimit=mysize;
    jLimit=mysize;
    k=0;
    while (k < iLimit){
        l=0;
        while (l < jLimit) {
            scanf ("%d",&myA[k][l]);
            l=l+1;
        }
        k=k+1;
    }

    printMatrix(mysize,mysize,myA);
    myC[i][j]=myA[i][k]*myA[k][j];
    printf("\n");
    printMatrix(mysize,mysize,myC);
    return 0;
}

必須對所有元素進行矩陣相乘。 因此它應該在嵌套的for循環中。 您在代碼中正在做什么

myC[i][j]=myA[i][k]*myA[k][j];

該語句將只乘以索引i,j,k表示的矩陣的一個元素(在代碼中超出范圍)。 上面的語句必須保留在3個嵌套的for循環內。 像這樣

for (i=0;i<m;i++)
{
   for(j=0;j<q;j++)
   {
       myC[i][j]=0;
       for(k=0;k<n;k++)
           myC[i][j]+= myA[i][k]*myA[k][j];
   }
}

這僅乘以兩個元素,其中ij和k都超出范圍。

 myC[i][j]=myA[i][k]*myA[k][j];

它應該處於三重循環中,您可以在其中適當地設置ij和k。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM