如何用c语言实现两个一维矩阵相乘?谢谢!要用2维数组。。。。

2024-11-23 12:57:43
推荐回答(1个)
回答1:

C语言程序:

#include "stdio.h"
 
//矩阵乘法
void product(double m1[][3], double m2[][3], double result[][3]);

//显示矩阵的元素
void display(double m[][3]);
 
int main()
{
    double m1[3][3] = {{1, 2, 1}, {2, 1, 4}, {3, 4, 5}};
double m2[3][3] = {{1, 0, -1}, {-1, -2, 0}, {1, 0, 1}};
double result[3][3];
   
    product(m1, m2, result);
 
    display(result);
 
    return 0;
}
 
void product(double m1[][3], double m2[][3], double result[][3])
{      
    for(int i=0; i<3; i++) 
    {
        for(int j=0; j<3; j++) 
        {
            *(*(result + i) + j) = 0;
            for(int k=0; k<3; k++) 
            {
                *(*(result + i) + j) += *(*(m1 + i) + k) * *(*(m2 + k) + j); 
            }
        }
    }

 
void display(double m[][3])
{
    for(int i=0; i<3; i++)
    {
        for(int j=0; j<3; j++)
        {
            printf("%6.2lf", *((*m + i) + j));
        }
        printf("\n");
    }
}


运行测试:

  0.00 -4.00  0.00
 -4.00  0.00  5.00
  0.00  5.00 -2.00