矩陣相乘c語言
① 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;i<x;i++){
for(j=0;j<y;j++){
scanf("%d",&a[i][j]);
}
}
printf("請輸入矩陣b:\n");
for(i=0;i<y;i++){
for(j=0;j<z;j++){
scanf("%d",&b[i][j]);
}
}
printf("矩陣a為:\n");
for(i=0;i<x;i++){
for(j=0;j<y;j++){
printf("%d",a[i][j]);
if(j==y-1)
printf("\n");
else
printf("\t");
}
}
printf("矩陣b為:\n");
for(i=0;i<y;i++){
for(j=0;j<z;j++){
printf("%d",b[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}
for(i=0;i<x;i++){
for(l=0;l<z;l++){
for(j=0;j<y;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;i<x;i++){
for(j=0;j<z;j++){
printf("%d",c[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}
return 0;
}
② c語言的矩陣乘法問題 初學者求助
//矩陣乘法屬於線性代數;矩陣乘法的原理不難,只要原理搞請,代碼很好寫的
#include<stdio.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(" ");
}
}