1、判斷是否可以做矩陣乘法
分別求得兩個矩陣的行數(shù)a1,b1以及列數(shù)a2,b2。
如果a1 == b1,并且a2 == b2則進(jìn)行乘法運(yùn)算文章來源:http://www.zghlxwxcb.cn/news/detail-743242.html
2、C代碼實(shí)現(xiàn):
#include<stdio.h>
#include<assert.h>
int main(){
int a[3][3] = {{1,2,3},{2,3,4},{2,5,4}};
int b[3][3] = {{1,0,3},{0,1,4},{2,0,4}};
int len = 0;
int value1 = 0;
int k = sizeof(a[0])/sizeof(int);
//a1 = 二維數(shù)組的元素個數(shù)(行數(shù))
int a1 = sizeof(a)/(k*sizeof(int));
//a2 = 二維數(shù)組中單個元素的長度(列數(shù))
int a2 = k;
k = sizeof(b[0])/sizeof(int);
int b1 = sizeof(b)/(k * sizeof(int));
int b2 = k;
if(a1 != b2 && a2 != b1) {
printf("這兩個矩陣不能做乘法運(yùn)算:\n");
return 0;
}
int c[10][10];
//矩陣的乘法運(yùn)算
for(int i = 0; i < a1;i++){
for(int j = 0;j < b2 ;j++){
for(int p = 0 ; p < a2;p++){
//行、列 元素的乘積之和
value1 += a[i][p] * b[p][j];
}
c[i][len++] = value1;
value1 = 0;
//len == a1 指的是二維數(shù)組已經(jīng)到達(dá)當(dāng)行的最后元素
if(len == a1){
len =0;
}
}
}
//打印矩陣乘法結(jié)果
for(int i = 0; i < k;i++){
for(int j = 0;j < k ;j++){
printf("%4d ",c[i][j]);
}
printf("\n");
}
}
3、代碼結(jié)果
文章來源地址http://www.zghlxwxcb.cn/news/detail-743242.html
到了這里,關(guān)于矩陣乘法(C語言實(shí)現(xiàn)),超詳細(xì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!