我在作業中遇到了這個問題。我已經做到了這一點,並確定問題出在我的三個for循環中。這個問題直接說使用3 for循環,所以我知道這可能只是一個邏輯錯誤。C中的5x5矩陣乘法
#include<stdio.h>
void matMult(int A[][5],int B[][5],int C[][5]);
int printMat_5x5(int A[5][5]);
int main() {
int A[5][5] = {{1,2,3,4,6},
{6,1,5,3,8},
{2,6,4,9,9},
{1,3,8,3,4},
{5,7,8,2,5}};
int B[5][5] = {{3,5,0,8,7},
{2,2,4,8,3},
{0,2,5,1,2},
{1,4,0,5,1},
{3,4,8,2,3}};
int C[5][5] = {0};
matMult(A,B,C);
printMat_5x5(A);
printf("\n");
printMat_5x5(B);
printf("\n");
printMat_5x5(C);
return 0;
}
void matMult(int A[][5], int B[][5], int C[][5])
{
int i;
int j;
int k;
for(i = 0; i <= 2; i++) {
for(j = 0; j <= 4; j++) {
for(k = 0; k <= 3; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
int printMat_5x5(int A[5][5]){
int i;
int j;
for (i = 0;i < 5;i++) {
for(j = 0;j < 5;j++) {
printf("%2d",A[i][j]);
}
printf("\n");
}
}
編輯: 這裏是問題,抱歉沒有發佈它的第一次。
寫一個C函數來乘以兩個五乘五矩陣。原型系統應該讀
void matMult(int a[][5],int b[][5],int c[][5]);
所得矩陣乘積(
a
倍b
)二維陣列c
在被返回(函數的第三個參數)。使用三個嵌套for循環編程您的解決方案(每個生成計數器值爲0,1,2,3,4)也就是說,不要在問題中爲5乘5的情況編寫特定的公式,但要使代碼一般很容易被改變來計算更大的方陣的乘積。使用陣列a: 1 2 3 4 6 6 1 5 3 8 2 6 4 9 9 1 3 8 3 4 5 7 8 2 5 b: 3 5 0 8 7 2 2 4 8 3 0 2 5 1 2 1 4 0 5 1 3 4 8 2 3
打印使用五點矩陣印刷5創造了一個C函數你在一個整潔格式矩陣寫主要程序來測試你的函數。打印所有三個矩陣。使用C數組初始化功能在主程序中生成測試數組。
您是否有真正的問題?我不確定你在找什麼。 – Gabe 2010-03-15 01:52:32
請記住,對於產品中的給定索引'i,j',可以取第一個矩陣的第i行,第二個矩陣的第j列,然後乘以所有的'兩組中的數字對。爲什麼你的指數變量分別持續到2,4和3?你從哪裏得到這些數字? – 2010-03-15 01:53:24
我希望我可以倒下教授浪費他們的學生時間,當他們可以專注於一些事實上會促進他們大學畢業後的事業。 – 2010-03-15 01:56:38