題目描述
計算兩個矩陣A和B的乘積。
輸入第一行三個正整數m、p和n,0<=m,n,p<=10,表示矩陣A是m行p列,矩陣B是p行n列;接下來的m行是矩陣A的內容,每行p個整數,用空格隔開;最后的p行是矩陣B的內容,每行n個整數,用空格隔開。
輸出:輸出乘積矩陣,輸出占m行,每行n個數據,以空格隔開。
樣例輸入?Copy
2 3 4 1 0 1 0 0 1 1 1 1 3 4 5 6 7 8 9 1 0
樣例輸出?Copy
9 10 2 3 8 9 1 0
分析
計算矩陣我們首先要知道線性代數中矩陣乘積的計算方法,兩個矩陣能夠相乘要滿足前一個矩陣的列數等于后一個矩陣的行數,相乘后得到的新的矩陣滿足行數等于前一個矩陣的行數,列數等于后一個矩陣的列數。文章來源:http://www.zghlxwxcb.cn/news/detail-754888.html
程序代碼
#include<stdio.h>
int main(){
int m,p,n;
scanf("%d%d%d",&m,&p,&n);//輸入m,n,p
int a[10][10],b[10][10];//定義兩個數組用來存放矩陣A和矩陣B的元素
for(int i=0;i<m;i++){//利用循環(huán)輸入矩陣A的各個元素
for(int j=0;j<p;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<p;i++){//利用循環(huán)輸入矩陣B的各個元素
for(int j=0;j<n;j++){
scanf("%d",&b[i][j]);
}
}
int c[10][10];//定義一個矩陣C用來存放相乘后的元素
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
c[i][j]=0;//先將c[i][j]賦值為0
for(int k=0;k<p;k++)//利用矩陣相乘的性質計算和
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
for(int i=0;i<m;i++){//利用循環(huán)輸出矩陣C中的每一個元素
for(int j=0;j<n;j++){
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}
運行結果
文章來源地址http://www.zghlxwxcb.cn/news/detail-754888.html
到了這里,關于C語言矩陣乘積(ZZULIOJ1127:矩陣乘積)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!